changeset 2757:2fffbe070800 icedtea-2.6.0pre11

Bump to icedtea-2.6pre11. Merge AArch64 port into mainline IcedTea7. Add arch-specific processing of tmp1 register needed for d/f2i Added make rules to allow aarch64-x86 hybrid build to progress Added missing aarch64-specific include Added missing aarch64-specific make file Added missing changes for debug code Added missing inline method Added missing shared global UseCRC32Intrinsics Added pd global UseVectoredExceptions Add local method to redirect to AbstractAssembler::relocate Add missing declarations for CRC32 methods Add missing include Add missing special case code for aarch64 Add rules to assemble .S files Add support for storing aarch64 call format Add wrapper method to avoid dependency on not yet defined code buffer class Aded missing endif Array load must only read 32 bits Backout 8c8b5e62e624 and instead move .S rule from zeroshark.make to rules.make Backout additional changes made in ec6a6772fed6, which revert parts of the PPC/AIX port and IcedTea fixes. Changed klass oop encode to heap oop encode Changed Method* to methodOop Corrcted type Correct assert to allow for AArch64 Corrected error in disassembler code Corrected include Corrected include path Corrected typo Correct includes Correct Method to methdoOopDesc Defn of BIND does not need to use __ macro Don't test arraycopy routines when using AArch64 simulator Emit_int64 is renamed Ensure C1 static call stub employs absolute move to allow patching Ensure C2 static calls use correct call adddress in static stub reloc Fix couple of mistakes in generate of method handle dispatch Fix cut and paste-o in header Fixed another typo Fixed error in include Fixed hsdis for aarch64 native or simulated Fixed various typos and omissions Fixed various typos, overlooked cases and wrong accessors Fix error introduced into profiling code Fix more errors introduced into interpreter profile counter increment Fix relocations Fix several small typos Fix some typos Fix typo Fix up aarch64-specific patching code Fix up crc32 support Fix various typos Get rid of unnecessary declaration Guess at how to implement C1 deoptimize_trap generator Initial cut of aarch64 code pulled from jdk8 tree Make aarch64-x86 hybrid build use correct paths Make hsdis handle aarch64 native case Make static stubs load methodOop in cpool to avoid problems at GC Missing change needed to support aarch64 build Modified make files to support aarch64 build Modified shared src to support full aarch64 backport Moved fields which need access from java to top level Need to pass CFLAGS when assembling .S files using CC_COMPILE Provide missing CRC32 methods Reload rcpool register after a VM call in case a permgen GC has moved the cache Relocated aarch64 vtable generate code to conform to jdk7 Remove comment to avoid breaking macro Removed aarch64 compiled_IC implementation to conform to jdk7 Removed metaspaceShared code to conform to jdk7 Removed redundant field use_XOR_for_compressed_class_base Removed some errors in signal handling code Removed undefined metadata case Remove redundant bracket Remove support for volatile load/store rules in ad file Renamed emit_int32 to emit_long and added local emit_long64 in place of missing emit_int64 Restored missing open brace Restore working x86 build Reverted aarch64 architecture description (ad) file to conform to jdk7 Reverted aarch64 c1_xxx files to conform to jdk7 Reverted aarch64 c2 globals to conform to jdk7 Reverted aarch64 frame code to conform to jdk7 Reverted aarch64 runtime code to conform to jdk7 Reverted aarch64 stubs code to conform to jdk7 Reverted aarch64 template interpreter code to conform to jdk7 Reverted aarch64 vm structs code to conform to jdk7 Reverted aarch64 vm version code to conform to jdk7 Reverted aarch64 vtable stubs code to conform to jdk7 Reverted assembler_aarch64.cpp/hpp to conform to jdk7 Reverted bytecodeInterpreter_aarch64 to conform to jdk7 Reverted global defs code to conform to jdk7 Reverted instr cache code to conform to jdk7 Reverted interpreter code to conform to jdk7 Reverted interpreter masm code to conform to jdk7 Reverted jni code to conform to jdk7 Reverted method handles code to conform to jdk7 Reverted native instr code to conform to jdk7 Reverted os_cpu/linux_aarch64 code to conform to jdk7 Reverted reloc info code to conform to jdk7 Revert Method:: etc to methodOopDesc:: etc Some errors revealed when building debug image Temporarily disable running test_gamma Use correct post-increment size in repne_scanw Use membar rules and delete special case volatile rules Use method register to access counter increment field Use movoop in C1 ic_call to keep verifier happy Use the correct return value from the VM resolve call Various changes to accommodate inclusion of ppc port in icedtea7 Work around weird compiler issue 2014-11-11 Andrew John Hughes <gnu.andrew@member.fsf.org> Merge AArch64 port into mainline IcedTea7. * patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch, * patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch, * patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch, * patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch, * patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch, * patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch, * patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch, * patches/hotspot/aarch64/20141014-8015256-better_class_accessibility.patch, * patches/hotspot/aarch64/20141014-8036805-correct_linker_method_lookup.patch, * patches/hotspot/aarch64/20141014-8038899-safer_safepoints.patch, * patches/hotspot/aarch64/20141014-8038903-more_native_monitor_monitoring.patch, * patches/hotspot/aarch64/20141014-8041717-issue_with_class_file_parser.patch, * patches/hotspot/aarch64/20141014-8042603-safepointpolloffset.patch, * patches/hotspot/aarch64/20141014-8050485-super_causes_verifyerror.patch, * patches/hotspot/aarch64/8051012-verifier_regression.patch: Remove unneeded patches from AArch64 HotSpot build. * INSTALL: Remove mention of AArch64 HotSpot build. * Makefile.am: (CORBA_CHANGESET): Update to icedtea-2.6pre11. (JAXP_CHANGESET): Likewise. (JAXWS_CHANGESET): Likewise. (JDK_CHANGESET): Likewise. (LANGTOOLS_CHANGESET): Likewise. (OPENJDK_CHANGESET): Likewise. (CORBA_SHA256SUM): Likewise. (JAXP_SHA256SUM): Likewise. (JAXWS_SHA256SUM): Likewise. (JDK_SHA256SUM): Likewise. (LANGTOOLS_SHA256SUM): Likewise. (OPENJDK_SHA256SUM): Likewise. (ICEDTEA_PATCHES): Remove AArch64 HotSpot build patches. * NEWS: Updated. * acinclude.m4: (IT_WITH_HOTSPOT_BUILD): Always use 'default'. * configure.ac: Bump to 2.6.0pre11. * hotspot.map.in: Update to icedtea-2.6.0pre11. Drop AArch64 build.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Wed, 12 Nov 2014 16:25:26 +0000
parents 5330835a20a6
children b7d5d8a6747b
files ChangeLog INSTALL Makefile.am NEWS acinclude.m4 configure.ac hotspot.map.in patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch patches/hotspot/aarch64/20141014-8015256-better_class_accessibility.patch patches/hotspot/aarch64/20141014-8036805-correct_linker_method_lookup.patch patches/hotspot/aarch64/20141014-8038899-safer_safepoints.patch patches/hotspot/aarch64/20141014-8038903-more_native_monitor_monitoring.patch patches/hotspot/aarch64/20141014-8041717-issue_with_class_file_parser.patch patches/hotspot/aarch64/20141014-8042603-safepointpolloffset.patch patches/hotspot/aarch64/20141014-8050485-super_causes_verifyerror.patch patches/hotspot/aarch64/8051012-verifier_regression.patch
diffstat 22 files changed, 164 insertions(+), 1580 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Nov 07 16:08:33 2014 +0000
+++ b/ChangeLog	Wed Nov 12 16:25:26 2014 +0000
@@ -1,3 +1,45 @@
+2014-11-11  Andrew John Hughes  <gnu.andrew@member.fsf.org>
+
+	Merge AArch64 port into mainline IcedTea7.
+	* patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch,
+	* patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch,
+	* patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch,
+	* patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch,
+	* patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch,
+	* patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch,
+	* patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch,
+	* patches/hotspot/aarch64/20141014-8015256-better_class_accessibility.patch,
+	* patches/hotspot/aarch64/20141014-8036805-correct_linker_method_lookup.patch,
+	* patches/hotspot/aarch64/20141014-8038899-safer_safepoints.patch,
+	* patches/hotspot/aarch64/20141014-8038903-more_native_monitor_monitoring.patch,
+	* patches/hotspot/aarch64/20141014-8041717-issue_with_class_file_parser.patch,
+	* patches/hotspot/aarch64/20141014-8042603-safepointpolloffset.patch,
+	* patches/hotspot/aarch64/20141014-8050485-super_causes_verifyerror.patch,
+	* patches/hotspot/aarch64/8051012-verifier_regression.patch:
+	Remove unneeded patches from AArch64 HotSpot build.
+	* INSTALL: Remove mention of AArch64 HotSpot build.
+	* Makefile.am:
+	(CORBA_CHANGESET): Update to icedtea-2.6pre11.
+	(JAXP_CHANGESET): Likewise.
+	(JAXWS_CHANGESET): Likewise.
+	(JDK_CHANGESET): Likewise.
+	(LANGTOOLS_CHANGESET): Likewise.
+	(OPENJDK_CHANGESET): Likewise.
+	(CORBA_SHA256SUM): Likewise.
+	(JAXP_SHA256SUM): Likewise.
+	(JAXWS_SHA256SUM): Likewise.
+	(JDK_SHA256SUM): Likewise.
+	(LANGTOOLS_SHA256SUM): Likewise.
+	(OPENJDK_SHA256SUM): Likewise.
+	(ICEDTEA_PATCHES): Remove AArch64 HotSpot build
+	patches.
+	* NEWS: Updated.
+	* acinclude.m4:
+	(IT_WITH_HOTSPOT_BUILD): Always use 'default'.
+	* configure.ac: Bump to 2.6.0pre11.
+	* hotspot.map.in: Update to icedtea-2.6.0pre11.
+	Drop AArch64 build.
+
 2014-11-06  Andrew John Hughes  <gnu.andrew@member.fsf.org>
 
 	* INSTALL: Updated.
--- a/INSTALL	Fri Nov 07 16:08:33 2014 +0000
+++ b/INSTALL	Wed Nov 12 16:25:26 2014 +0000
@@ -360,8 +360,7 @@
 
 Currently, IcedTea 2.x supports the 'default' HotSpot tree, which is
 part of the IcedTea forest for the particular minor release series
-being used, and 'aarch64', which uses snapshots of the AArch64 HotSpot
-port available at http://icedtea.classpath.org/hg/icedtea7-forest-aarch64/hotspot/
+being used.
 
 JavaScript Support
 ==================
--- a/Makefile.am	Fri Nov 07 16:08:33 2014 +0000
+++ b/Makefile.am	Wed Nov 12 16:25:26 2014 +0000
@@ -4,19 +4,19 @@
 BUILD_VERSION = b02
 COMBINED_VERSION = $(JDK_UPDATE_VERSION)-$(BUILD_VERSION)
 
-CORBA_CHANGESET = 1a346ad4e322
-JAXP_CHANGESET = 603009854864
-JAXWS_CHANGESET = 70a94bce8d6e
-JDK_CHANGESET = 33a33bbea1ae
-LANGTOOLS_CHANGESET = cf836e0ed10d
-OPENJDK_CHANGESET = 200124c2f78d
+CORBA_CHANGESET = c11c54a2675c
+JAXP_CHANGESET = 79d217da0a7a
+JAXWS_CHANGESET = 2823343ab244
+JDK_CHANGESET = 8a445d1b5af5
+LANGTOOLS_CHANGESET = 510234036e06
+OPENJDK_CHANGESET = 05e485acec14
 
-CORBA_SHA256SUM = 6bbf09732d6a9be121d2a5c35e080324096702dd51fc60e13f1f34f214b2c99c
-JAXP_SHA256SUM = da4d472957b4f067b84ae1fe95f0ba95b62172c847ac1bf8cd826b62304c1926
-JAXWS_SHA256SUM = e04ac70c852471e36e6cf18352f720411e310df5393ac05ee9f45ce7a8ca7685
-JDK_SHA256SUM = f85e1e35b1c06e858712d1543928eae2169b4d6e02a7c266074b4a344b09d613
-LANGTOOLS_SHA256SUM = b351d1ac749817fff2618cf115a5484d78feecc35c46e180c7192b3596b60ef5
-OPENJDK_SHA256SUM = b7bfea4e2d9df2a0d1c4095bb820e04ba8d54e9ffea247742ea129bea8e9373a
+CORBA_SHA256SUM = 34423a2478ce65ce73c0dc55f947323365b1471252d2e3b6c785adb54042c21b
+JAXP_SHA256SUM = 1d8bcb0612d2d3b6079d4bb84d656aacafe5f3061ceadc2d7e9814270c77ac53
+JAXWS_SHA256SUM = 33a5c2f6dc84c09d40a4fe6d6beaff4f1bfecb82bb69f9730f03d50e9af782c0
+JDK_SHA256SUM = 0836221bc6aa763ff8814d15a15f0ed2410e727cf8461e609db82a535cdc2027
+LANGTOOLS_SHA256SUM = cc85aa73a186475590c54d980dfd04ae37665155ea07ee6f1418e4d2e55429d0
+OPENJDK_SHA256SUM = 56d5f39698e91571c8155767577126b4106cf67fad0a6743918063970c208b93
 
 DROP_URL = http://icedtea.classpath.org/download/drops
 
@@ -279,29 +279,6 @@
 endif
 endif
 
-if WITH_ALT_HSBUILD
-ICEDTEA_PATCHES += \
-	patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch \
-	patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch \
-	patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch \
-	patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch \
-	patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch \
-	patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch \
-	patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch \
-	patches/hotspot/aarch64/8051012-verifier_regression.patch \
-	patches/hotspot/aarch64/20141014-8015256-better_class_accessibility.patch \
-	patches/hotspot/aarch64/20141014-8036805-correct_linker_method_lookup.patch \
-	patches/hotspot/aarch64/20141014-8038899-safer_safepoints.patch \
-	patches/hotspot/aarch64/20141014-8038903-more_native_monitor_monitoring.patch \
-	patches/hotspot/aarch64/20141014-8041717-issue_with_class_file_parser.patch \
-	patches/hotspot/aarch64/20141014-8042603-safepointpolloffset.patch \
-	patches/hotspot/aarch64/20141014-8050485-super_causes_verifyerror.patch
-if ENABLE_SYSTEMTAP
-ICEDTEA_PATCHES += \
-	patches/systemtap_gc.patch
-endif
-endif
-
 ICEDTEA_PATCHES += $(DISTRIBUTION_PATCHES)
 
 # Bootstrapping patches
--- a/NEWS	Fri Nov 07 16:08:33 2014 +0000
+++ b/NEWS	Wed Nov 12 16:25:26 2014 +0000
@@ -270,6 +270,112 @@
   - PR2032: CACAO lacks JVM_FindClassFromCaller introduced by security patch in 2.5.3
 * AArch64 port
   - Use the IcedTea7 fork version rather than the one based on HotSpot 25.
+  - Add arch-specific processing of tmp1 register needed for d/f2i
+  - Added make rules to allow aarch64-x86 hybrid build to progress
+  - Added missing aarch64-specific include
+  - Added missing aarch64-specific make file
+  - Added missing changes for debug code
+  - Added missing inline method
+  - Added missing shared global UseCRC32Intrinsics
+  - Added pd global UseVectoredExceptions
+  - Add local method to redirect to AbstractAssembler::relocate
+  - Add missing declarations for CRC32 methods
+  - Add missing include
+  - Add missing special case code for aarch64
+  - Add rules to assemble .S files
+  - Add support for storing aarch64 call format
+  - Add wrapper method to avoid dependency on not yet defined code buffer class
+  - Aded missing endif
+  - Array load must only read 32 bits
+  - Backout 8c8b5e62e624 and instead move .S rule from zeroshark.make to rules.make
+  - Backout additional changes made in ec6a6772fed6, which revert parts of the PPC/AIX port and IcedTea fixes.
+  - Changed klass oop encode to heap oop encode
+  - Changed Method* to methodOop
+  - Corrcted type
+  - Correct assert to allow for AArch64
+  - Corrected error in disassembler code
+  - Corrected include
+  - Corrected include path
+  - Corrected typo
+  - Correct includes
+  - Correct Method to methdoOopDesc
+  - Defn of BIND does not need to use __ macro
+  - Don't test arraycopy routines when using AArch64 simulator
+  - Emit_int64 is renamed
+  - Ensure C1 static call stub employs absolute move to allow patching
+  - Ensure C2 static calls use correct call adddress in static stub reloc
+  - Fix couple of mistakes in generate of method handle dispatch
+  - Fix cut and paste-o in header
+  - Fixed another typo
+  - Fixed error in include
+  - Fixed hsdis for aarch64 native or simulated
+  - Fixed various typos and omissions
+  - Fixed various typos, overlooked cases and wrong accessors
+  - Fix error introduced into profiling code
+  - Fix more errors introduced into interpreter profile counter increment
+  - Fix relocations
+  - Fix several small typos
+  - Fix some typos
+  - Fix typo
+  - Fix up aarch64-specific patching code
+  - Fix up crc32 support
+  - Fix various typos
+  - Get rid of unnecessary declaration
+  - Guess at how to implement C1 deoptimize_trap generator
+  - Initial cut of aarch64 code pulled from jdk8 tree
+  - Make aarch64-x86 hybrid build use correct paths
+  - Make hsdis handle aarch64 native case
+  - Make static stubs load methodOop in cpool to avoid problems at GC
+  - Missing change needed to support aarch64 build
+  - Modified make files to support aarch64 build
+  - Modified shared src to support full aarch64 backport
+  - Moved fields which need access from java to top level
+  - Need to pass CFLAGS when assembling .S files using CC_COMPILE
+  - Provide missing CRC32 methods
+  - Reload rcpool register after a VM call in case a permgen GC has moved the cache
+  - Relocated aarch64 vtable generate code to conform to jdk7
+  - Remove comment to avoid breaking macro
+  - Removed aarch64 compiled_IC implementation to conform to jdk7
+  - Removed metaspaceShared code to conform to jdk7
+  - Removed redundant field use_XOR_for_compressed_class_base
+  - Removed some errors in signal handling code
+  - Removed undefined metadata case
+  - Remove redundant bracket
+  - Remove support for volatile load/store rules in ad file
+  - Renamed emit_int32 to emit_long and added local emit_long64 in place of missing emit_int64
+  - Restored missing open brace
+  - Restore working x86 build
+  - Reverted aarch64 architecture description (ad) file to conform to jdk7
+  - Reverted aarch64 c1_xxx files to conform to jdk7
+  - Reverted aarch64 c2 globals to conform to jdk7
+  - Reverted aarch64 frame code to conform to jdk7
+  - Reverted aarch64 runtime code to conform to jdk7
+  - Reverted aarch64 stubs code to conform to jdk7
+  - Reverted aarch64 template interpreter code to conform to jdk7
+  - Reverted aarch64 vm structs code to conform to jdk7
+  - Reverted aarch64 vm version code to conform to jdk7
+  - Reverted aarch64 vtable stubs code to conform to jdk7
+  - Reverted assembler_aarch64.cpp/hpp to conform to jdk7
+  - Reverted bytecodeInterpreter_aarch64 to conform to jdk7
+  - Reverted global defs code to conform to jdk7
+  - Reverted instr cache code to conform to jdk7
+  - Reverted interpreter code to conform to jdk7
+  - Reverted interpreter masm code to conform to jdk7
+  - Reverted jni code to conform to jdk7
+  - Reverted method handles code to conform to jdk7
+  - Reverted native instr code to conform to jdk7
+  - Reverted os_cpu/linux_aarch64 code to conform to jdk7
+  - Reverted reloc info code to conform to jdk7
+  - Revert Method:: etc to methodOopDesc:: etc
+  - Some errors revealed when building debug image
+  - Temporarily disable running test_gamma
+  - Use correct post-increment size in repne_scanw
+  - Use membar rules and delete special case volatile rules
+  - Use method register to access counter increment field
+  - Use movoop in C1 ic_call to keep verifier happy
+  - Use the correct return value from the VM resolve call
+  - Various changes to accommodate inclusion of ppc port in icedtea7
+  - Work around weird compiler issue
 
 New in release 2.5.3 (2014-10-14):
 
--- a/acinclude.m4	Fri Nov 07 16:08:33 2014 +0000
+++ b/acinclude.m4	Wed Nov 12 16:25:26 2014 +0000
@@ -928,11 +928,7 @@
 AC_DEFUN_ONCE([IT_WITH_HOTSPOT_BUILD],
 [
   AC_REQUIRE([IT_ENABLE_ZERO_BUILD])
-  if test "x$JRE_ARCH_DIR" = "xaarch64"; then
-    DEFAULT_BUILD="aarch64"
-  else
-    DEFAULT_BUILD="default"
-  fi
+  DEFAULT_BUILD="default"
   AC_MSG_CHECKING([which HotSpot build to use])
   AC_ARG_WITH([hotspot-build],
 	      [AS_HELP_STRING(--with-hotspot-build=BUILD,the HotSpot build to use [[BUILD=default]])],
--- a/configure.ac	Fri Nov 07 16:08:33 2014 +0000
+++ b/configure.ac	Wed Nov 12 16:25:26 2014 +0000
@@ -1,4 +1,4 @@
-AC_INIT([icedtea], [2.6.0pre10], [distro-pkg-dev@openjdk.java.net])
+AC_INIT([icedtea], [2.6.0pre11], [distro-pkg-dev@openjdk.java.net])
 AM_INIT_AUTOMAKE([1.9 tar-pax foreign])
 AM_MAINTAINER_MODE([enable])
 AC_CONFIG_FILES([Makefile])
--- a/hotspot.map.in	Fri Nov 07 16:08:33 2014 +0000
+++ b/hotspot.map.in	Wed Nov 12 16:25:26 2014 +0000
@@ -1,3 +1,2 @@
 # version type(drop/hg) url changeset sha256sum
-default drop http://icedtea.classpath.org/download/drops/icedtea7/@ICEDTEA_RELEASE@ c8417820ac94 4c980d855addedf9a3494aa56b2ee47feea5fe8bddd43085fd3225b3ea44bd52
-aarch64 drop http://icedtea.classpath.org/download/drops/icedtea7/@ICEDTEA_RELEASE@ 5b7dcf16fe5d 74b7d1e8eb76ab356135cbcb89474da9ba573516fc88024f40c56ff6cae31059
+default drop http://icedtea.classpath.org/download/drops/icedtea7/@ICEDTEA_RELEASE@ e13857ecc787 8f5afd290d3afde6633892538117751e068a4a67dd0eeb797fedaf1a369fa0e8
--- a/patches/hotspot/aarch64/20140715-8030763-validate_global_memory_allocation.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-# HG changeset patch
-# User hseigel
-# Date 1392397647 18000
-#      Fri Feb 14 12:07:27 2014 -0500
-# Node ID bfcfcf77f4113196057552663b8245306e3555d8
-# Parent  1e71efaaaa5bbdeb979e9227e8df11535284f6bb
-8030763: Validate global memory allocation
-Summary: Add length checks where necessary
-Reviewed-by: coleenp, mschoene
-
-diff -r 1e71efaaaa5b -r bfcfcf77f411 src/os/bsd/vm/os_bsd.cpp
---- openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp	Wed Feb 12 16:22:48 2014 -0800
-+++ openjdk/hotspot/src/os/bsd/vm/os_bsd.cpp	Fri Feb 14 12:07:27 2014 -0500
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2014, 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
-@@ -1819,9 +1819,6 @@
-   ::abort();
- }
- 
--// unused on bsd for now.
--void os::set_error_file(const char *logfile) {}
--
- 
- // This method is a copy of JDK's sysGetLastErrorString
- // from src/solaris/hpi/src/system_md.c
-@@ -2585,6 +2582,7 @@
-         // determine if this is a legacy image or modules image
-         // modules image doesn't have "jre" subdirectory
-         len = strlen(buf);
-+        assert(len < buflen, "Ran out of buffer space");
-         jrelib_p = buf + len;
- 
-         // Add the appropriate library subdir
-@@ -2620,7 +2618,7 @@
-     }
-   }
- 
--  strcpy(saved_jvm_path, buf);
-+  strncpy(saved_jvm_path, buf, MAXPATHLEN);
- }
- 
- void os::print_jni_name_prefix_on(outputStream* st, int args_size) {
-diff -r 1e71efaaaa5b -r bfcfcf77f411 src/os/linux/vm/os_linux.cpp
---- openjdk/hotspot/src/os/linux/vm/os_linux.cpp	Wed Feb 12 16:22:48 2014 -0800
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp	Fri Feb 14 12:07:27 2014 -0500
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2014, 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
-@@ -1612,9 +1612,6 @@
-   ::abort();
- }
- 
--// unused on linux for now.
--void os::set_error_file(const char *logfile) {}
--
- 
- // This method is a copy of JDK's sysGetLastErrorString
- // from src/solaris/hpi/src/system_md.c
-@@ -2411,6 +2408,7 @@
-         // determine if this is a legacy image or modules image
-         // modules image doesn't have "jre" subdirectory
-         len = strlen(buf);
-+        assert(len < buflen, "Ran out of buffer room");
-         jrelib_p = buf + len;
-         snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch);
-         if (0 != access(buf, F_OK)) {
-@@ -2433,7 +2431,7 @@
-     }
-   }
- 
--  strcpy(saved_jvm_path, buf);
-+  strncpy(saved_jvm_path, buf, MAXPATHLEN);
- }
- 
- void os::print_jni_name_prefix_on(outputStream* st, int args_size) {
-diff -r 1e71efaaaa5b -r bfcfcf77f411 src/os/solaris/vm/os_solaris.cpp
---- openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp	Wed Feb 12 16:22:48 2014 -0800
-+++ openjdk/hotspot/src/os/solaris/vm/os_solaris.cpp	Fri Feb 14 12:07:27 2014 -0500
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, 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
-@@ -1877,9 +1877,6 @@
-   ::abort(); // dump core (for debugging)
- }
- 
--// unused
--void os::set_error_file(const char *logfile) {}
--
- // DLL functions
- 
- const char* os::dll_file_extension() { return ".so"; }
-@@ -2561,6 +2558,7 @@
-         // determine if this is a legacy image or modules image
-         // modules image doesn't have "jre" subdirectory
-         len = strlen(buf);
-+        assert(len < buflen, "Ran out of buffer space");
-         jrelib_p = buf + len;
-         snprintf(jrelib_p, buflen-len, "/jre/lib/%s", cpu_arch);
-         if (0 != access(buf, F_OK)) {
-@@ -2581,7 +2579,7 @@
-     }
-   }
- 
--  strcpy(saved_jvm_path, buf);
-+  strncpy(saved_jvm_path, buf, MAXPATHLEN);
- }
- 
- 
-diff -r 1e71efaaaa5b -r bfcfcf77f411 src/os/windows/vm/os_windows.cpp
---- openjdk/hotspot/src/os/windows/vm/os_windows.cpp	Wed Feb 12 16:22:48 2014 -0800
-+++ openjdk/hotspot/src/os/windows/vm/os_windows.cpp	Fri Feb 14 12:07:27 2014 -0500
-@@ -1773,27 +1773,28 @@
-      // libjvm.so is installed there (append a fake suffix
-      // hotspot/libjvm.so).
-      char* java_home_var = ::getenv("JAVA_HOME");
--     if (java_home_var != NULL && java_home_var[0] != 0) {
--
--        strncpy(buf, java_home_var, buflen);
--
--        // determine if this is a legacy image or modules image
--        // modules image doesn't have "jre" subdirectory
--        size_t len = strlen(buf);
--        char* jrebin_p = buf + len;
--        jio_snprintf(jrebin_p, buflen-len, "\\jre\\bin\\");
--        if (0 != _access(buf, 0)) {
--          jio_snprintf(jrebin_p, buflen-len, "\\bin\\");
--        }
--        len = strlen(buf);
--        jio_snprintf(buf + len, buflen-len, "hotspot\\jvm.dll");
-+     if (java_home_var != NULL && java_home_var[0] != 0 &&
-+         strlen(java_home_var) < (size_t)buflen) {
-+
-+       strncpy(buf, java_home_var, buflen);
-+
-+       // determine if this is a legacy image or modules image
-+       // modules image doesn't have "jre" subdirectory
-+       size_t len = strlen(buf);
-+       char* jrebin_p = buf + len;
-+       jio_snprintf(jrebin_p, buflen-len, "\\jre\\bin\\");
-+       if (0 != _access(buf, 0)) {
-+         jio_snprintf(jrebin_p, buflen-len, "\\bin\\");
-+       }
-+       len = strlen(buf);
-+       jio_snprintf(buf + len, buflen-len, "hotspot\\jvm.dll");
-      }
-   }
- 
-   if(buf[0] == '\0') {
--  GetModuleFileName(vm_lib_handle, buf, buflen);
--  }
--  strcpy(saved_jvm_path, buf);
-+    GetModuleFileName(vm_lib_handle, buf, buflen);
-+  }
-+  strncpy(saved_jvm_path, buf, MAX_PATH);
- }
- 
- 
-@@ -2218,17 +2219,6 @@
- #endif //_WIN64
- 
- 
--// Fatal error reporting is single threaded so we can make this a
--// static and preallocated.  If it's more than MAX_PATH silently ignore
--// it.
--static char saved_error_file[MAX_PATH] = {0};
--
--void os::set_error_file(const char *logfile) {
--  if (strlen(logfile) <= MAX_PATH) {
--    strncpy(saved_error_file, logfile, MAX_PATH);
--  }
--}
--
- static inline void report_error(Thread* t, DWORD exception_code,
-                                 address addr, void* siginfo, void* context) {
-   VMError err(t, exception_code, addr, siginfo, context);
-diff -r 1e71efaaaa5b -r bfcfcf77f411 src/share/vm/compiler/compileBroker.cpp
---- openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp	Wed Feb 12 16:22:48 2014 -0800
-+++ openjdk/hotspot/src/share/vm/compiler/compileBroker.cpp	Fri Feb 14 12:07:27 2014 -0500
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1999, 2014, 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
-@@ -1921,6 +1921,7 @@
-   ResourceMark rm;
-   char* method_name = method->name()->as_C_string();
-   strncpy(_last_method_compiled, method_name, CompileBroker::name_buffer_length);
-+  _last_method_compiled[CompileBroker::name_buffer_length - 1] = '\0'; // ensure null terminated
-   char current_method[CompilerCounters::cmname_buffer_length];
-   size_t maxLen = CompilerCounters::cmname_buffer_length;
- 
-diff -r 1e71efaaaa5b -r bfcfcf77f411 src/share/vm/runtime/os.hpp
---- openjdk/hotspot/src/share/vm/runtime/os.hpp	Wed Feb 12 16:22:48 2014 -0800
-+++ openjdk/hotspot/src/share/vm/runtime/os.hpp	Fri Feb 14 12:07:27 2014 -0500
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, 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
-@@ -460,9 +460,6 @@
-   // run cmd in a separate process and return its exit code; or -1 on failures
-   static int fork_and_exec(char *cmd);
- 
--  // Set file to send error reports.
--  static void set_error_file(const char *logfile);
--
-   // os::exit() is merged with vm_exit()
-   // static void exit(int num);
- 
-diff -r 1e71efaaaa5b -r bfcfcf77f411 src/share/vm/utilities/vmError.cpp
---- openjdk/hotspot/src/share/vm/utilities/vmError.cpp	Wed Feb 12 16:22:48 2014 -0800
-+++ openjdk/hotspot/src/share/vm/utilities/vmError.cpp	Fri Feb 14 12:07:27 2014 -0500
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2003, 2014, 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
-@@ -951,7 +951,6 @@
-       if (fd != -1) {
-         out.print_raw("# An error report file with more information is saved as:\n# ");
-         out.print_raw_cr(buffer);
--        os::set_error_file(buffer);
- 
-         log.set_fd(fd);
-       } else {
--- a/patches/hotspot/aarch64/20140715-8032536-jvm_resolves_wrong_method.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-# HG changeset patch
-# User hseigel
-# Date 1393966688 18000
-#      Tue Mar 04 15:58:08 2014 -0500
-# Node ID 6670d25b0255d9fdad7fa444f86706ccd6deaccb
-# Parent  bbe9be4ea0d4ad2f7cef759171e1731084078f7e
-8032536: JVM resolves wrong method in some unusual cases
-Summary: Handle package private case
-Reviewed-by: coleenp, acorn, jdn
-
-diff -r bbe9be4ea0d4 -r 6670d25b0255 src/share/vm/oops/klassVtable.cpp
---- openjdk/hotspot/src/share/vm/oops/klassVtable.cpp	Thu Feb 27 13:00:19 2014 -0800
-+++ openjdk/hotspot/src/share/vm/oops/klassVtable.cpp	Tue Mar 04 15:58:08 2014 -0500
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, 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
-@@ -209,6 +209,17 @@
- // For bytecodes not produced by javac together it is possible that a method does not override
- // the superclass's method, but might indirectly override a super-super class's vtable entry
- // If none found, return a null superk, else return the superk of the method this does override
-+// For public and protected methods: if they override a superclass, they will
-+// also be overridden themselves appropriately.
-+// Private methods do not override and are not overridden.
-+// Package Private methods are trickier:
-+// e.g. P1.A, pub m
-+// P2.B extends A, package private m
-+// P1.C extends B, public m
-+// P1.C.m needs to override P1.A.m and can not override P2.B.m
-+// Therefore: all package private methods need their own vtable entries for
-+// them to be the root of an inheritance overriding decision
-+// Package private methods may also override other vtable entries
- instanceKlass* klassVtable::find_transitive_override(instanceKlass* initialsuper, methodHandle target_method,
-                             int vtable_index, Handle target_loader, Symbol* target_classname, Thread * THREAD) {
-   instanceKlass* superk = initialsuper;
-@@ -310,8 +321,12 @@
-       ((klass->major_version() >= VTABLE_TRANSITIVE_OVERRIDE_VERSION)
-         && ((super_klass = find_transitive_override(super_klass, target_method, i, target_loader,
-              target_classname, THREAD)) != (instanceKlass*)NULL))) {
--        // overriding, so no new entry
--        allocate_new = false;
-+
-+        // Package private methods always need a new entry to root their own
-+        // overriding. They may also override other methods.
-+        if (!target_method()->is_package_private()) {
-+          allocate_new = false;
-+        }
- 
-         if (checkconstraints) {
-         // Override vtable entry if passes loader constraint check
-@@ -433,6 +448,12 @@
-     return true;
-   }
- 
-+  // Package private methods always need a new entry to root their own
-+  // overriding. This allows transitive overriding to work.
-+  if (target_method()->is_package_private()) {
-+    return true;
-+  }
-+
-   // search through the super class hierarchy to see if we need
-   // a new entry
-   ResourceMark rm;
--- a/patches/hotspot/aarch64/20140715-8035119-fix_exceptions_to_bytecode_verification.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-# HG changeset patch
-# User hseigel
-# Date 1395266649 14400
-#      Wed Mar 19 18:04:09 2014 -0400
-# Node ID 458f18560343240fdd8002937d5930ca77f3e12f
-# Parent  c650f71b9c677cac304ce64be1e3959c018ebd8b
-8035119: Fix exceptions to bytecode verification
-Summary: Prevent ctor calls to super() and this() from avoidable code (try blocks, if stmts, etc.)
-Reviewed-by: coleenp, acorn, mschoene
-
-diff -r c650f71b9c67 -r 458f18560343 src/share/vm/classfile/stackMapTable.cpp
---- openjdk/hotspot/src/share/vm/classfile/stackMapTable.cpp	Wed Mar 19 14:18:19 2014 -0400
-+++ openjdk/hotspot/src/share/vm/classfile/stackMapTable.cpp	Wed Mar 19 18:04:09 2014 -0400
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2003, 2014, 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
-@@ -134,6 +134,7 @@
-   }
-   // check if uninitialized objects exist on backward branches
-   check_new_object(frame, target, CHECK_VERIFY(frame->verifier()));
-+  frame->verifier()->update_furthest_jump(target);
- }
- 
- void StackMapTable::check_new_object(
-diff -r c650f71b9c67 -r 458f18560343 src/share/vm/classfile/verifier.cpp
---- openjdk/hotspot/src/share/vm/classfile/verifier.cpp	Wed Mar 19 14:18:19 2014 -0400
-+++ openjdk/hotspot/src/share/vm/classfile/verifier.cpp	Wed Mar 19 18:04:09 2014 -0400
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1998, 2014, 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
-@@ -629,6 +629,9 @@
-   bool no_control_flow = false; // Set to true when there is no direct control
-                                 // flow from current instruction to the next
-                                 // instruction in sequence
-+
-+  set_furthest_jump(0);
-+
-   Bytecodes::Code opcode;
-   while (!bcs.is_last_bytecode()) {
-     // Check for recursive re-verification before each bytecode.
-@@ -2239,6 +2242,29 @@
-           "Bad <init> method call");
-       return;
-     }
-+
-+    // Make sure that this call is not jumped over.
-+    if (bci < furthest_jump()) {
-+      verify_error(ErrorContext::bad_code(bci),
-+                   "Bad <init> method call from inside of a branch");
-+      return;
-+    }
-+
-+    // Make sure that this call is not done from within a TRY block because
-+    // that can result in returning an incomplete object.  Simply checking
-+    // (bci >= start_pc) also ensures that this call is not done after a TRY
-+    // block.  That is also illegal because this call must be the first Java
-+    // statement in the constructor.
-+    ExceptionTable exhandlers(_method());
-+    int exlength = exhandlers.length();
-+    for(int i = 0; i < exlength; i++) {
-+      if (bci >= exhandlers.start_pc(i)) {
-+        verify_error(ErrorContext::bad_code(bci),
-+                     "Bad <init> method call from after the start of a try block");
-+        return;
-+      }
-+    }
-+
-     current_frame->initialize_object(type, current_type());
-     *this_uninit = true;
-   } else if (type.is_uninitialized()) {
-diff -r c650f71b9c67 -r 458f18560343 src/share/vm/classfile/verifier.hpp
---- openjdk/hotspot/src/share/vm/classfile/verifier.hpp	Wed Mar 19 14:18:19 2014 -0400
-+++ openjdk/hotspot/src/share/vm/classfile/verifier.hpp	Wed Mar 19 18:04:09 2014 -0400
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1998, 2014, 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
-@@ -256,6 +256,9 @@
- 
-   ErrorContext _error_context;  // contains information about an error
- 
-+  // Used to detect illegal jumps over calls to super() and this() in ctors.
-+  int32_t _furthest_jump;
-+
-   void verify_method(methodHandle method, TRAPS);
-   char* generate_code_data(methodHandle m, u4 code_length, TRAPS);
-   void verify_exception_handler_table(u4 code_length, char* code_data,
-@@ -398,6 +401,20 @@
-   Symbol* create_temporary_symbol(const char *s, int length, TRAPS);
- 
-   TypeOrigin ref_ctx(const char* str, TRAPS);
-+
-+  // Keep track of the furthest branch done in a method to make sure that
-+  // there are no branches over calls to super() or this() from inside of
-+  // a constructor.
-+  int32_t furthest_jump() { return _furthest_jump; }
-+
-+  void set_furthest_jump(int32_t target) {
-+    _furthest_jump = target;
-+  }
-+
-+  void update_furthest_jump(int32_t target) {
-+    if (target > _furthest_jump) _furthest_jump = target;
-+  }
-+
- };
- 
- inline int ClassVerifier::change_sig_to_verificationType(
--- a/patches/hotspot/aarch64/20140715-8036800-attribute_oom_to_right_code.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-# HG changeset patch
-# User hseigel
-# Date 1395253099 14400
-#      Wed Mar 19 14:18:19 2014 -0400
-# Node ID c650f71b9c677cac304ce64be1e3959c018ebd8b
-# Parent  f9dfc73ddf90febd8593e014594af705c9392761
-8036800: Attribute OOM to correct part of code
-Summary: checks that the attribute_length does not exceed the length of remaining data in the class file
-Reviewed-by: coleenp, ahgross
-
-diff -r f9dfc73ddf90 -r c650f71b9c67 src/share/vm/classfile/classFileParser.cpp
---- openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp	Tue Mar 18 13:08:04 2014 -0700
-+++ openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp	Wed Mar 19 14:18:19 2014 -0400
-@@ -2654,18 +2654,19 @@
-   ClassFileStream* cfs = stream();
-   u1* current_start = cfs->current();
- 
--  cfs->guarantee_more(2, CHECK);  // length
--  int attribute_array_length = cfs->get_u2_fast();
--
--  guarantee_property(_max_bootstrap_specifier_index < attribute_array_length,
--                     "Short length on BootstrapMethods in class file %s",
--                     CHECK);
--
-   guarantee_property(attribute_byte_length > sizeof(u2),
-                      "Invalid BootstrapMethods attribute length %u in class file %s",
-                      attribute_byte_length,
-                      CHECK);
- 
-+  cfs->guarantee_more(attribute_byte_length, CHECK);
-+
-+  int attribute_array_length = cfs->get_u2_fast();
-+
-+  guarantee_property(_max_bootstrap_specifier_index < attribute_array_length,
-+                     "Short length on BootstrapMethods in class file %s",
-+                     CHECK);
-+
-   // The attribute contains a counted array of counted tuples of shorts,
-   // represending bootstrap specifiers:
-   //    length*{bootstrap_method_index, argument_count*{argument_index}}
--- a/patches/hotspot/aarch64/20140715-8037076-check_constant_pool_constants.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-# HG changeset patch
-# User coleenp
-# Date 1396636676 18000
-#      Fri Apr 04 13:37:56 2014 -0500
-# Node ID 02f12a9d5aec4489bef45e82ddcbd1d644a54dad
-# Parent  ed0d828486a40609af52f45066d33f2458518f8d
-8037076: Check constant pool constants
-Summary: Fix events log string.
-Reviewed-by: kvn, mschoene
-Contributed-by: paul.nauman@oracle.com
-
-diff -r ed0d828486a4 -r 02f12a9d5aec src/share/vm/utilities/events.cpp
---- openjdk/hotspot/src/share/vm/utilities/events.cpp	Thu Apr 03 11:19:47 2014 -0700
-+++ openjdk/hotspot/src/share/vm/utilities/events.cpp	Fri Apr 04 13:37:56 2014 -0500
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, 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
-@@ -93,7 +93,7 @@
-     va_start(ap, format);
-     // Save a copy of begin message and log it.
-     _buffer.printv(format, ap);
--    Events::log(NULL, _buffer);
-+    Events::log(NULL, "%s", (const char*)_buffer);
-     va_end(ap);
-   }
- }
-@@ -102,6 +102,6 @@
-   if (LogEvents) {
-     // Append " done" to the begin message and log it
-     _buffer.append(" done");
--    Events::log(NULL, _buffer);
-+    Events::log(NULL, "%s", (const char*)_buffer);
-   }
- }
--- a/patches/hotspot/aarch64/20140715-8037157-verify_init_call.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-# HG changeset patch
-# User hseigel
-# Date 1396876974 14400
-#      Mon Apr 07 09:22:54 2014 -0400
-# Node ID f0f39dbf68aa7fc1ca1332311c783f3a28acd621
-# Parent  63574c639b1de9c6198dcff2311e410844922019
-8037157: Verify <init> call
-Summary: Check for null method
-Reviewed-by: coleenp, acorn, mschoene
-
-diff -r 63574c639b1d -r f0f39dbf68aa src/share/vm/classfile/verifier.cpp
---- openjdk/hotspot/src/share/vm/classfile/verifier.cpp	Wed Apr 09 14:07:17 2014 -0700
-+++ openjdk/hotspot/src/share/vm/classfile/verifier.cpp	Mon Apr 07 09:22:54 2014 -0400
-@@ -2301,6 +2301,11 @@
-       methodOop m = instanceKlass::cast(ref_klass)->uncached_lookup_method(
-         vmSymbols::object_initializer_name(),
-         cp->signature_ref_at(bcs->get_index_u2()));
-+      if (m == NULL) {
-+        verify_error(ErrorContext::bad_code(bci),
-+            "Call to missing <init> method");
-+        return;
-+      }
-       instanceKlassHandle mh(THREAD, m->method_holder());
-       if (m->is_protected() && !mh->is_same_class_package(_klass())) {
-         bool assignable = current_type().is_assignable_from(
--- a/patches/hotspot/aarch64/20140715-8037167-better_method_signature_resolution.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-# HG changeset patch
-# User acorn
-# Date 1397592607 18000
-#      Tue Apr 15 15:10:07 2014 -0500
-# Node ID 16b9b3c081815a2f05b29ce73ceaa723cd335a05
-# Parent  f0f39dbf68aa7fc1ca1332311c783f3a28acd621
-8037167: Better method signature resolution
-Reviewed-by: mschoene, hseigel, lfoltan
-Contributed-by: paul.nauman@oracle.com
-
-diff -r f0f39dbf68aa -r 16b9b3c08181 src/share/vm/classfile/classFileParser.cpp
---- openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp	Mon Apr 07 09:22:54 2014 -0400
-+++ openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp	Tue Apr 15 15:10:07 2014 -0500
-@@ -961,7 +961,7 @@
-             "Wrong size %u for field's Signature attribute in class file %s",
-             attribute_length, CHECK);
-         }
--        generic_signature_index = cfs->get_u2(CHECK);
-+        generic_signature_index = parse_generic_signature_attribute(cp, CHECK);
-       } else if (attribute_name == vmSymbols::tag_runtime_visible_annotations()) {
-         runtime_visible_annotations_length = attribute_length;
-         runtime_visible_annotations = cfs->get_u1_buffer();
-@@ -2133,8 +2133,7 @@
-             "Invalid Signature attribute length %u in class file %s",
-             method_attribute_length, CHECK_(nullHandle));
-         }
--        cfs->guarantee_more(2, CHECK_(nullHandle));  // generic_signature_index
--        generic_signature_index = cfs->get_u2_fast();
-+        generic_signature_index = parse_generic_signature_attribute(cp, CHECK_(nullHandle));
-       } else if (method_attribute_name == vmSymbols::tag_runtime_visible_annotations()) {
-         runtime_visible_annotations_length = method_attribute_length;
-         runtime_visible_annotations = cfs->get_u1_buffer();
-@@ -2502,6 +2501,17 @@
-   }
- }
- 
-+// Parse generic_signature attribute for methods and fields
-+u2 ClassFileParser::parse_generic_signature_attribute(constantPoolHandle cp, TRAPS) {
-+  ClassFileStream* cfs = stream();
-+  cfs->guarantee_more(2, CHECK_0);  // generic_signature_index
-+  u2 generic_signature_index = cfs->get_u2_fast();
-+  check_property(
-+    valid_symbol_at(cp, generic_signature_index),
-+    "Invalid Signature attribute at constant pool index %u in class file %s",
-+    generic_signature_index, CHECK_0);
-+  return generic_signature_index;
-+}
- 
- void ClassFileParser::parse_classfile_sourcefile_attribute(constantPoolHandle cp, TRAPS) {
-   ClassFileStream* cfs = stream();
-diff -r f0f39dbf68aa -r 16b9b3c08181 src/share/vm/classfile/classFileParser.hpp
---- openjdk/hotspot/src/share/vm/classfile/classFileParser.hpp	Mon Apr 07 09:22:54 2014 -0400
-+++ openjdk/hotspot/src/share/vm/classfile/classFileParser.hpp	Tue Apr 15 15:10:07 2014 -0500
-@@ -202,6 +202,7 @@
-   typeArrayOop parse_stackmap_table(u4 code_attribute_length, TRAPS);
- 
-   // Classfile attribute parsing
-+  u2 parse_generic_signature_attribute(constantPoolHandle cp, TRAPS);
-   void parse_classfile_sourcefile_attribute(constantPoolHandle cp, TRAPS);
-   void parse_classfile_source_debug_extension_attribute(constantPoolHandle cp, int length, TRAPS);
-   u2   parse_classfile_inner_classes_attribute(u1* inner_classes_attribute_start,
-@@ -336,6 +337,12 @@
-             : cp->tag_at(index).is_klass_reference());
-   }
- 
-+  // Checks that the cpool index is in range and is a utf8
-+  bool valid_symbol_at(constantPoolHandle cp, int cpool_index) {
-+    return (cp->is_within_bounds(cpool_index) &&
-+            cp->tag_at(cpool_index).is_utf8());
-+  }
-+
-  public:
-   // Constructor
-   ClassFileParser(ClassFileStream* st) { set_stream(st); }
--- a/patches/hotspot/aarch64/20141014-8015256-better_class_accessibility.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-diff -Nru openjdk.orig/hotspot/make/bsd/makefiles/mapfile-vers-debug openjdk/hotspot/make/bsd/makefiles/mapfile-vers-debug
---- openjdk.orig/hotspot/make/bsd/makefiles/mapfile-vers-debug	2014-10-21 10:09:50.000000000 +0100
-+++ openjdk/hotspot/make/bsd/makefiles/mapfile-vers-debug	2014-10-29 18:19:45.802384144 +0000
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
-+# Copyright (c) 2002, 2014, 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
-@@ -82,6 +82,7 @@
-                 _JVM_EnableCompiler
-                 _JVM_Exit
-                 _JVM_FillInStackTrace
-+                _JVM_FindClassFromCaller
-                 _JVM_FindClassFromClass
-                 _JVM_FindClassFromClassLoader
-                 _JVM_FindClassFromBootLoader
-diff -Nru openjdk.orig/hotspot/make/bsd/makefiles/mapfile-vers-product openjdk/hotspot/make/bsd/makefiles/mapfile-vers-product
---- openjdk.orig/hotspot/make/bsd/makefiles/mapfile-vers-product	2014-10-21 10:09:50.000000000 +0100
-+++ openjdk/hotspot/make/bsd/makefiles/mapfile-vers-product	2014-10-29 18:19:45.802384144 +0000
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
-+# Copyright (c) 2002, 2014, 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
-@@ -82,6 +82,7 @@
-                 _JVM_EnableCompiler
-                 _JVM_Exit
-                 _JVM_FillInStackTrace
-+                _JVM_FindClassFromCaller
-                 _JVM_FindClassFromClass
-                 _JVM_FindClassFromClassLoader
-                 _JVM_FindClassFromBootLoader
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/mapfile-vers-debug openjdk/hotspot/make/linux/makefiles/mapfile-vers-debug
---- openjdk.orig/hotspot/make/linux/makefiles/mapfile-vers-debug	2014-10-21 10:09:50.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/mapfile-vers-debug	2014-10-29 18:19:45.802384144 +0000
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
-+# Copyright (c) 2002, 2014, 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
-@@ -84,6 +84,7 @@
-                 JVM_EnableCompiler;
-                 JVM_Exit;
-                 JVM_FillInStackTrace;
-+                JVM_FindClassFromCaller;
-                 JVM_FindClassFromClass;
-                 JVM_FindClassFromClassLoader;
-                 JVM_FindClassFromBootLoader;
-diff -Nru openjdk.orig/hotspot/make/linux/makefiles/mapfile-vers-product openjdk/hotspot/make/linux/makefiles/mapfile-vers-product
---- openjdk.orig/hotspot/make/linux/makefiles/mapfile-vers-product	2014-10-21 10:09:50.000000000 +0100
-+++ openjdk/hotspot/make/linux/makefiles/mapfile-vers-product	2014-10-29 18:19:45.802384144 +0000
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
-+# Copyright (c) 2002, 2014, 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
-@@ -84,6 +84,7 @@
-                 JVM_EnableCompiler;
-                 JVM_Exit;
-                 JVM_FillInStackTrace;
-+                JVM_FindClassFromCaller;
-                 JVM_FindClassFromClass;
-                 JVM_FindClassFromClassLoader;
-                 JVM_FindClassFromBootLoader;
-diff -Nru openjdk.orig/hotspot/make/solaris/makefiles/mapfile-vers openjdk/hotspot/make/solaris/makefiles/mapfile-vers
---- openjdk.orig/hotspot/make/solaris/makefiles/mapfile-vers	2014-10-21 10:09:50.000000000 +0100
-+++ openjdk/hotspot/make/solaris/makefiles/mapfile-vers	2014-10-29 18:19:45.802384144 +0000
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
-+# Copyright (c) 2000, 2014, 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
-@@ -84,6 +84,7 @@
- 		JVM_EnableCompiler;
- 		JVM_Exit;
- 		JVM_FillInStackTrace;
-+		JVM_FindClassFromCaller;
- 		JVM_FindClassFromClass;
- 		JVM_FindClassFromClassLoader;
- 		JVM_FindClassFromBootLoader;
-diff -Nru openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp openjdk/hotspot/src/share/vm/prims/jvm.cpp
---- openjdk.orig/hotspot/src/share/vm/prims/jvm.cpp	2014-10-21 10:09:50.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/prims/jvm.cpp	2014-10-29 18:20:34.399060035 +0000
-@@ -755,6 +755,7 @@
-   return (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror());
- JVM_END
- 
-+// Not used; JVM_FindClassFromCaller replaces this.
- JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name,
-                                                jboolean init, jobject loader,
-                                                jboolean throwError))
-@@ -781,6 +782,42 @@
-   return result;
- JVM_END
- 
-+// Find a class with this name in this loader, using the caller's protection domain.
-+JVM_ENTRY(jclass, JVM_FindClassFromCaller(JNIEnv* env, const char* name,
-+                                          jboolean init, jobject loader,
-+                                          jclass caller))
-+  JVMWrapper2("JVM_FindClassFromCaller %s throws ClassNotFoundException", name);
-+  // Java libraries should ensure that name is never null...
-+  if (name == NULL || (int)strlen(name) > Symbol::max_length()) {
-+    // It's impossible to create this class;  the name cannot fit
-+    // into the constant pool.
-+    THROW_MSG_0(vmSymbols::java_lang_ClassNotFoundException(), name);
-+  }
-+
-+  TempNewSymbol h_name = SymbolTable::new_symbol(name, CHECK_NULL);
-+
-+  oop loader_oop = JNIHandles::resolve(loader);
-+  oop from_class = JNIHandles::resolve(caller);
-+  oop protection_domain = NULL;
-+  // If loader is null, shouldn't call ClassLoader.checkPackageAccess; otherwise get
-+  // NPE. Put it in another way, the bootstrap class loader has all permission and
-+  // thus no checkPackageAccess equivalence in the VM class loader.
-+  // The caller is also passed as NULL by the java code if there is no security
-+  // manager to avoid the performance cost of getting the calling class.
-+  if (from_class != NULL && loader_oop != NULL) {
-+    protection_domain = instanceKlass::cast(java_lang_Class::as_klassOop(from_class))->protection_domain();
-+  }
-+
-+  Handle h_loader(THREAD, loader_oop);
-+  Handle h_prot(THREAD, protection_domain);
-+  jclass result = find_class_from_class_loader(env, h_name, init, h_loader,
-+                                               h_prot, false, THREAD);
-+
-+  if (TraceClassResolution && result != NULL) {
-+    trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result)));
-+  }
-+  return result;
-+JVM_END
- 
- JVM_ENTRY(jclass, JVM_FindClassFromClass(JNIEnv *env, const char *name,
-                                          jboolean init, jclass from))
-diff -Nru openjdk.orig/hotspot/src/share/vm/prims/jvm.h openjdk/hotspot/src/share/vm/prims/jvm.h
---- openjdk.orig/hotspot/src/share/vm/prims/jvm.h	2014-10-21 10:09:50.000000000 +0100
-+++ openjdk/hotspot/src/share/vm/prims/jvm.h	2014-10-29 18:19:45.802384144 +0000
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, 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
-@@ -418,6 +418,19 @@
- JVM_FindClassFromBootLoader(JNIEnv *env, const char *name);
- 
- /*
-+ * Find a class from a given class loader.  Throws ClassNotFoundException.
-+ *  name:   name of class
-+ *  init:   whether initialization is done
-+ *  loader: class loader to look up the class. This may not be the same as the caller's
-+ *          class loader.
-+ *  caller: initiating class. The initiating class may be null when a security
-+ *          manager is not installed.
-+ */
-+JNIEXPORT jclass JNICALL
-+JVM_FindClassFromCaller(JNIEnv *env, const char *name, jboolean init,
-+                        jobject loader, jclass caller);
-+
-+/*
-  * Find a class from a given class.
-  */
- JNIEXPORT jclass JNICALL
--- a/patches/hotspot/aarch64/20141014-8036805-correct_linker_method_lookup.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-# HG changeset patch
-# User sgabdura
-# Date 1398408411 -7200
-#      Fri Apr 25 08:46:51 2014 +0200
-# Node ID 737fcf3628705e6b37af2b4c7abfe905873394f2
-# Parent  ad547adc14abb459a2aa28cb2bfdd4ab6f4d8632
-8036805: Correct linker method lookup.
-8036810: Correct linker field lookup
-Summary: Correct handling of array of primitive type qualifiers during field and method resolution.
-Reviewed-by: lfoltan
-
-diff -r ad547adc14ab -r 737fcf362870 src/share/vm/interpreter/linkResolver.cpp
---- openjdk/hotspot/src/share/vm/interpreter/linkResolver.cpp	Thu Apr 24 22:05:07 2014 -0700
-+++ openjdk/hotspot/src/share/vm/interpreter/linkResolver.cpp	Fri Apr 25 08:46:51 2014 +0200
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
-  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-  *
-  * This code is free software; you can redistribute it and/or modify it
-@@ -187,6 +187,14 @@
- 
- void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
-   methodOop result_oop = klass->uncached_lookup_method(name, signature);
-+
-+  //JDK 7 does not support default methods, but this code ported from JDK8 to keep code consistent for all JDK.
-+  if (klass->oop_is_array()) {
-+    // Only consider klass and super klass for arrays
-+    result = methodHandle(THREAD, result_oop);
-+    return;
-+  }
-+
-   if (EnableInvokeDynamic && result_oop != NULL) {
-     vmIntrinsics::ID iid = result_oop->intrinsic_id();
-     if (MethodHandles::is_signature_polymorphic(iid)) {
-@@ -421,7 +429,7 @@
-   // 2. lookup method in resolved klass and its super klasses
-   lookup_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, CHECK);
- 
--  if (resolved_method.is_null()) { // not found in the class hierarchy
-+  if (resolved_method.is_null() && !resolved_klass->oop_is_array()) { // not found in the class hierarchy
-     // 3. lookup method in all the interfaces implemented by the resolved klass
-     lookup_method_in_interfaces(resolved_method, resolved_klass, method_name, method_signature, CHECK);
- 
-@@ -434,16 +442,16 @@
-         CLEAR_PENDING_EXCEPTION;
-       }
-     }
-+  }
- 
--    if (resolved_method.is_null()) {
--      // 4. method lookup failed
--      ResourceMark rm(THREAD);
--      THROW_MSG_CAUSE(vmSymbols::java_lang_NoSuchMethodError(),
--                      methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
--                                                              method_name,
--                                                              method_signature),
--                      nested_exception);
--    }
-+  if (resolved_method.is_null()) {
-+    // 4. method lookup failed
-+    ResourceMark rm(THREAD);
-+    THROW_MSG_CAUSE(vmSymbols::java_lang_NoSuchMethodError(),
-+                    methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
-+                                                            method_name,
-+                                                            method_signature),
-+                    nested_exception);
-   }
- 
-   // 5. check if method is concrete
-@@ -514,17 +522,18 @@
-   // lookup method in this interface or its super, java.lang.Object
-   lookup_instance_method_in_klasses(resolved_method, resolved_klass, method_name, method_signature, CHECK);
- 
--  if (resolved_method.is_null()) {
-+  if (resolved_method.is_null() && !resolved_klass->oop_is_array()) {
-     // lookup method in all the super-interfaces
-     lookup_method_in_interfaces(resolved_method, resolved_klass, method_name, method_signature, CHECK);
--    if (resolved_method.is_null()) {
--      // no method found
--      ResourceMark rm(THREAD);
--      THROW_MSG(vmSymbols::java_lang_NoSuchMethodError(),
--                methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
--                                                        method_name,
--                                                        method_signature));
--    }
-+  }
-+
-+  if (resolved_method.is_null()) {
-+    // no method found
-+    ResourceMark rm(THREAD);
-+    THROW_MSG(vmSymbols::java_lang_NoSuchMethodError(),
-+              methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
-+                                                      method_name,
-+                                                      method_signature));
-   }
- 
-   if (check_access) {
-@@ -614,7 +623,7 @@
- 
-   // Resolve instance field
-   fieldDescriptor fd; // find_field initializes fd if found
--  KlassHandle sel_klass(THREAD, instanceKlass::cast(resolved_klass())->find_field(field, sig, &fd));
-+  KlassHandle sel_klass(THREAD, resolved_klass->find_field(field, sig, &fd));
-   // check if field exists; i.e., if a klass containing the field def has been selected
-   if (sel_klass.is_null()){
-     ResourceMark rm(THREAD);
-diff -r ad547adc14ab -r 737fcf362870 src/share/vm/oops/arrayKlass.cpp
---- openjdk/hotspot/src/share/vm/oops/arrayKlass.cpp	Thu Apr 24 22:05:07 2014 -0700
-+++ openjdk/hotspot/src/share/vm/oops/arrayKlass.cpp	Fri Apr 25 08:46:51 2014 +0200
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, 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
-@@ -64,6 +64,13 @@
-   return NULL;
- }
- 
-+// find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined
-+klassOop arrayKlass::find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
-+  // There are no fields in an array klass but look to the super class (Object)
-+  assert(super(), "super klass must be present");
-+  return Klass::cast(super())->find_field(name, sig, fd);
-+}
-+
- methodOop arrayKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
-   // There are no methods in an array klass but the super class (Object) has some
-   assert(super(), "super klass must be present");
-diff -r ad547adc14ab -r 737fcf362870 src/share/vm/oops/arrayKlass.hpp
---- openjdk/hotspot/src/share/vm/oops/arrayKlass.hpp	Thu Apr 24 22:05:07 2014 -0700
-+++ openjdk/hotspot/src/share/vm/oops/arrayKlass.hpp	Fri Apr 25 08:46:51 2014 +0200
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, 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
-@@ -30,6 +30,8 @@
- #include "oops/klassOop.hpp"
- #include "oops/klassVtable.hpp"
- 
-+class fieldDescriptor;
-+
- // arrayKlass is the abstract baseclass for all array classes
- 
- class arrayKlass: public Klass {
-@@ -83,6 +85,9 @@
-   virtual oop multi_allocate(int rank, jint* sizes, TRAPS);
-   objArrayOop allocate_arrayArray(int n, int length, TRAPS);
- 
-+  // find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined
-+  klassOop find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const;
-+
-   // Lookup operations
-   methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const;
- 
-diff -r ad547adc14ab -r 737fcf362870 src/share/vm/oops/klass.cpp
---- openjdk/hotspot/src/share/vm/oops/klass.cpp	Thu Apr 24 22:05:07 2014 -0700
-+++ openjdk/hotspot/src/share/vm/oops/klass.cpp	Fri Apr 25 08:46:51 2014 +0200
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, 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
-@@ -119,6 +119,15 @@
-   return is_subclass_of(k);
- }
- 
-+klassOop Klass::find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
-+#ifdef ASSERT
-+  tty->print_cr("Error: find_field called on a klass oop."
-+                " Likely error: reflection method does not correctly"
-+                " wrap return value in a mirror object.");
-+#endif
-+  ShouldNotReachHere();
-+  return NULL;
-+}
- 
- methodOop Klass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
- #ifdef ASSERT
-diff -r ad547adc14ab -r 737fcf362870 src/share/vm/oops/klass.hpp
---- openjdk/hotspot/src/share/vm/oops/klass.hpp	Thu Apr 24 22:05:07 2014 -0700
-+++ openjdk/hotspot/src/share/vm/oops/klass.hpp	Fri Apr 25 08:46:51 2014 +0200
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 1997, 2014, 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
-@@ -88,6 +88,7 @@
- class klassVtable;
- class KlassHandle;
- class OrderAccess;
-+class fieldDescriptor;
- 
- // Holder (or cage) for the C++ vtable of each kind of Klass.
- // We want to tightly constrain the location of the C++ vtable in the overall layout.
-@@ -514,6 +515,7 @@
-   virtual void initialize(TRAPS);
-   // lookup operation for MethodLookupCache
-   friend class MethodLookupCache;
-+  virtual klassOop find_field(Symbol* name, Symbol* signature, fieldDescriptor* fd) const;
-   virtual methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const;
-  public:
-   methodOop lookup_method(Symbol* name, Symbol* signature) const {
--- a/patches/hotspot/aarch64/20141014-8038899-safer_safepoints.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-# HG changeset patch
-# User twisti
-# Date 1397876733 36000
-#      Fri Apr 18 17:05:33 2014 -1000
-# Node ID 81c8c56eecf670bc717bdf22bc7aea7bef1a8502
-# Parent  dc31bfb7b37ad09bb1451c42bda33287ec5c5abf
-8038899: Safer safepoints
-Reviewed-by: kvn, ahgross
-
-diff -r dc31bfb7b37a -r 81c8c56eecf6 src/share/vm/runtime/arguments.cpp
---- openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Wed Apr 16 22:09:02 2014 -0700
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Fri Apr 18 17:05:33 2014 -1000
-@@ -2057,6 +2057,8 @@
-     PrintNMTStatistics = false;
-   }
- 
-+  status &= verify_interval(SafepointPollOffset, 0, os::vm_page_size() - BytesPerWord, "SafepointPollOffset");
-+
-   return status;
- }
- 
--- a/patches/hotspot/aarch64/20141014-8038903-more_native_monitor_monitoring.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-# HG changeset patch
-# User vkempik
-# Date 1403109008 -7200
-#      Wed Jun 18 18:30:08 2014 +0200
-# Node ID 4201be941a5663b61574981c10d2aaf998873610
-# Parent  53714bee78e0f06348298ba7648ac428794a27d3
-8038903: More native monitor monitoring
-Summary: Moved ntive monitor monitoring flags to experimental
-Reviewed-by: zgu
-
-diff -r 53714bee78e0 -r 4201be941a56 src/share/vm/runtime/globals.hpp
---- openjdk/hotspot/src/share/vm/runtime/globals.hpp	Tue Jun 17 15:31:24 2014 -0700
-+++ openjdk/hotspot/src/share/vm/runtime/globals.hpp	Wed Jun 18 18:30:08 2014 +0200
-@@ -1094,9 +1094,11 @@
-           "Prevent spurious or premature wakeups from object.wait "         \
-           "(Solaris only)")                                                 \
-                                                                             \
--  product(intx, NativeMonitorTimeout, -1, "(Unstable)" )                    \
--  product(intx, NativeMonitorFlags, 0, "(Unstable)" )                       \
--  product(intx, NativeMonitorSpinLimit, 20, "(Unstable)" )                  \
-+  experimental(intx, NativeMonitorTimeout, -1, "(Unstable)")                \
-+                                                                            \
-+  experimental(intx, NativeMonitorFlags, 0, "(Unstable)")                   \
-+                                                                            \
-+  experimental(intx, NativeMonitorSpinLimit, 20, "(Unstable)")              \
-                                                                             \
-   develop(bool, UsePthreads, false,                                         \
-           "Use pthread-based instead of libthread-based synchronization "   \
--- a/patches/hotspot/aarch64/20141014-8041717-issue_with_class_file_parser.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-# HG changeset patch
-# User hseigel
-# Date 1401471524 14400
-#      Fri May 30 13:38:44 2014 -0400
-# Node ID 761de55063900bd2fd89a750c59ef70bca10c5ee
-# Parent  fa1a8360ff78706def477a195b73d9ddb644bf64
-8041717: Issue with class file parser
-Summary: Add better checking for bad values.
-Reviewed-by: coleenp, lfoltan, mschoene
-
-diff -r fa1a8360ff78 -r 761de5506390 src/share/vm/classfile/classFileParser.cpp
---- openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp	Wed May 28 10:08:39 2014 -0700
-+++ openjdk/hotspot/src/share/vm/classfile/classFileParser.cpp	Fri May 30 13:38:44 2014 -0400
-@@ -2721,6 +2721,11 @@
-       "bootstrap_method_index %u has bad constant type in class file %s",
-       bootstrap_method_index,
-       CHECK);
-+
-+    guarantee_property((operand_fill_index + 1 + argument_count) < operands->length(),
-+      "Invalid BootstrapMethods num_bootstrap_methods or num_bootstrap_arguments value in class file %s",
-+      CHECK);
-+
-     operands->short_at_put(operand_fill_index++, bootstrap_method_index);
-     operands->short_at_put(operand_fill_index++, argument_count);
- 
-@@ -2738,7 +2743,6 @@
-   }
- 
-   assert(operand_fill_index == operands()->length(), "exact fill");
--  assert(constantPoolOopDesc::operand_array_length(operands()) == attribute_array_length, "correct decode");
- 
-   u1* current_end = cfs->current();
-   guarantee_property(current_end == current_start + attribute_byte_length,
--- a/patches/hotspot/aarch64/20141014-8042603-safepointpolloffset.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-# HG changeset patch
-# User twisti
-# Date 1400640638 25200
-#      Tue May 20 19:50:38 2014 -0700
-# Node ID 79abf6cf78074950b9206f5747734a59b0985c40
-# Parent  97fb076fab01e679c8e20b6653f217e467bf2693
-8042603: 'SafepointPollOffset' was not declared in static member function 'static bool Arguments::check_vm_args_consistency()'
-Reviewed-by: kvn
-
-diff -r 97fb076fab01 -r 79abf6cf7807 src/share/vm/runtime/arguments.cpp
---- openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Fri Oct 18 10:50:17 2013 +0200
-+++ openjdk/hotspot/src/share/vm/runtime/arguments.cpp	Tue May 20 19:50:38 2014 -0700
-@@ -2057,7 +2057,9 @@
-     PrintNMTStatistics = false;
-   }
- 
-+#ifdef COMPILER1
-   status &= verify_interval(SafepointPollOffset, 0, os::vm_page_size() - BytesPerWord, "SafepointPollOffset");
-+#endif
- 
-   return status;
- }
--- a/patches/hotspot/aarch64/20141014-8050485-super_causes_verifyerror.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,259 +0,0 @@
-# HG changeset patch
-# User hseigel
-# Date 1407889765 14400
-#      Tue Aug 12 20:29:25 2014 -0400
-# Node ID d6cb97651f0bd8d61f4d22aa7550145bbe6fb051
-# Parent  4b7acf32a20dc3232687c282cb5b87d390bc83ec
-8050485: super() in a try block in a ctor causes VerifyError
-Summary: Parse catch clause paths to ensure they end in throws
-Reviewed-by: dlong, acorn, kamg, ctornqvi, lfoltan
-
-diff -r 4b7acf32a20d -r d6cb97651f0b src/share/vm/classfile/verifier.cpp
---- openjdk/hotspot/src/share/vm/classfile/verifier.cpp	Tue Aug 19 04:13:50 2014 -0700
-+++ openjdk/hotspot/src/share/vm/classfile/verifier.cpp	Tue Aug 12 20:29:25 2014 -0400
-@@ -2224,6 +2224,181 @@
-   }
- }
- 
-+// Look at the method's handlers.  If the bci is in the handler's try block
-+// then check if the handler_pc is already on the stack.  If not, push it.
-+void ClassVerifier::push_handlers(ExceptionTable* exhandlers,
-+                                  GrowableArray<u4>* handler_stack,
-+                                  u4 bci) {
-+  int exlength = exhandlers->length();
-+  for(int x = 0; x < exlength; x++) {
-+    if (bci >= exhandlers->start_pc(x) && bci < exhandlers->end_pc(x)) {
-+      handler_stack->append_if_missing(exhandlers->handler_pc(x));
-+    }
-+  }
-+}
-+
-+// Return TRUE if all code paths starting with start_bc_offset end in
-+// bytecode athrow or loop.
-+bool ClassVerifier::ends_in_athrow(u4 start_bc_offset) {
-+  ResourceMark rm;
-+  // Create bytecode stream.
-+  RawBytecodeStream bcs(method());
-+  u4 code_length = method()->code_size();
-+  bcs.set_start(start_bc_offset);
-+  u4 target;
-+  // Create stack for storing bytecode start offsets for if* and *switch.
-+  GrowableArray<u4>* bci_stack = new GrowableArray<u4>(30);
-+  // Create stack for handlers for try blocks containing this handler.
-+  GrowableArray<u4>* handler_stack = new GrowableArray<u4>(30);
-+  // Create list of visited branch opcodes (goto* and if*).
-+  GrowableArray<u4>* visited_branches = new GrowableArray<u4>(30);
-+  ExceptionTable exhandlers(_method());
-+
-+  while (true) {
-+    if (bcs.is_last_bytecode()) {
-+      // if no more starting offsets to parse or if at the end of the
-+      // method then return false.
-+      if ((bci_stack->is_empty()) || ((u4)bcs.end_bci() == code_length))
-+        return false;
-+      // Pop a bytecode starting offset and scan from there.
-+      bcs.set_start(bci_stack->pop());
-+    }
-+    Bytecodes::Code opcode = bcs.raw_next();
-+    u4 bci = bcs.bci();
-+
-+    // If the bytecode is in a TRY block, push its handlers so they
-+    // will get parsed.
-+    push_handlers(&exhandlers, handler_stack, bci);
-+
-+    switch (opcode) {
-+      case Bytecodes::_if_icmpeq:
-+      case Bytecodes::_if_icmpne:
-+      case Bytecodes::_if_icmplt:
-+      case Bytecodes::_if_icmpge:
-+      case Bytecodes::_if_icmpgt:
-+      case Bytecodes::_if_icmple:
-+      case Bytecodes::_ifeq:
-+      case Bytecodes::_ifne:
-+      case Bytecodes::_iflt:
-+      case Bytecodes::_ifge:
-+      case Bytecodes::_ifgt:
-+      case Bytecodes::_ifle:
-+      case Bytecodes::_if_acmpeq:
-+      case Bytecodes::_if_acmpne:
-+      case Bytecodes::_ifnull:
-+      case Bytecodes::_ifnonnull:
-+        target = bcs.dest();
-+        if (visited_branches->contains(bci)) {
-+          if (bci_stack->is_empty()) return true;
-+          // Pop a bytecode starting offset and scan from there.
-+          bcs.set_start(bci_stack->pop());
-+        } else {
-+          if (target > bci) { // forward branch
-+            if (target >= code_length) return false;
-+            // Push the branch target onto the stack.
-+            bci_stack->push(target);
-+            // then, scan bytecodes starting with next.
-+            bcs.set_start(bcs.next_bci());
-+          } else { // backward branch
-+            // Push bytecode offset following backward branch onto the stack.
-+            bci_stack->push(bcs.next_bci());
-+            // Check bytecodes starting with branch target.
-+            bcs.set_start(target);
-+          }
-+          // Record target so we don't branch here again.
-+          visited_branches->append(bci);
-+        }
-+        break;
-+
-+      case Bytecodes::_goto:
-+      case Bytecodes::_goto_w:
-+        target = (opcode == Bytecodes::_goto ? bcs.dest() : bcs.dest_w());
-+        if (visited_branches->contains(bci)) {
-+          if (bci_stack->is_empty()) return true;
-+          // Been here before, pop new starting offset from stack.
-+          bcs.set_start(bci_stack->pop());
-+        } else {
-+          if (target >= code_length) return false;
-+          // Continue scanning from the target onward.
-+          bcs.set_start(target);
-+          // Record target so we don't branch here again.
-+          visited_branches->append(bci);
-+        }
-+        break;
-+
-+      // Check that all switch alternatives end in 'athrow' bytecodes. Since it
-+      // is  difficult to determine where each switch alternative ends, parse
-+      // each switch alternative until either hit a 'return', 'athrow', or reach
-+      // the end of the method's bytecodes.  This is gross but should be okay
-+      // because:
-+      // 1. tableswitch and lookupswitch byte codes in handlers for ctor explicit
-+      //    constructor invocations should be rare.
-+      // 2. if each switch alternative ends in an athrow then the parsing should be
-+      //    short.  If there is no athrow then it is bogus code, anyway.
-+      case Bytecodes::_lookupswitch:
-+      case Bytecodes::_tableswitch:
-+        {
-+          address aligned_bcp = (address) round_to((intptr_t)(bcs.bcp() + 1), jintSize);
-+          u4 default_offset = Bytes::get_Java_u4(aligned_bcp) + bci;
-+          int keys, delta;
-+          if (opcode == Bytecodes::_tableswitch) {
-+            jint low = (jint)Bytes::get_Java_u4(aligned_bcp + jintSize);
-+            jint high = (jint)Bytes::get_Java_u4(aligned_bcp + 2*jintSize);
-+            // This is invalid, but let the regular bytecode verifier
-+            // report this because the user will get a better error message.
-+            if (low > high) return true;
-+            keys = high - low + 1;
-+            delta = 1;
-+          } else {
-+            keys = (int)Bytes::get_Java_u4(aligned_bcp + jintSize);
-+            delta = 2;
-+          }
-+          // Invalid, let the regular bytecode verifier deal with it.
-+          if (keys < 0) return true;
-+
-+          // Push the offset of the next bytecode onto the stack.
-+          bci_stack->push(bcs.next_bci());
-+
-+          // Push the switch alternatives onto the stack.
-+          for (int i = 0; i < keys; i++) {
-+            u4 target = bci + (jint)Bytes::get_Java_u4(aligned_bcp+(3+i*delta)*jintSize);
-+            if (target > code_length) return false;
-+            bci_stack->push(target);
-+          }
-+
-+          // Start bytecode parsing for the switch at the default alternative.
-+          if (default_offset > code_length) return false;
-+          bcs.set_start(default_offset);
-+          break;
-+        }
-+
-+      case Bytecodes::_return:
-+        return false;
-+
-+      case Bytecodes::_athrow:
-+        {
-+          if (bci_stack->is_empty()) {
-+            if (handler_stack->is_empty()) {
-+              return true;
-+            } else {
-+              // Parse the catch handlers for try blocks containing athrow.
-+              bcs.set_start(handler_stack->pop());
-+            }
-+          } else {
-+            // Pop a bytecode offset and starting scanning from there.
-+            bcs.set_start(bci_stack->pop());
-+          }
-+        }
-+        break;
-+
-+      default:
-+        ;
-+    } // end switch
-+  } // end while loop
-+
-+  return false;
-+}
-+
- void ClassVerifier::verify_invoke_init(
-     RawBytecodeStream* bcs, u2 ref_class_index, VerificationType ref_class_type,
-     StackMapFrame* current_frame, u4 code_length, bool *this_uninit,
-@@ -2250,18 +2425,26 @@
-       return;
-     }
- 
--    // Make sure that this call is not done from within a TRY block because
--    // that can result in returning an incomplete object.  Simply checking
--    // (bci >= start_pc) also ensures that this call is not done after a TRY
--    // block.  That is also illegal because this call must be the first Java
--    // statement in the constructor.
-+    // Check if this call is done from inside of a TRY block.  If so, make
-+    // sure that all catch clause paths end in a throw.  Otherwise, this
-+    // can result in returning an incomplete object.
-     ExceptionTable exhandlers(_method());
-     int exlength = exhandlers.length();
-     for(int i = 0; i < exlength; i++) {
--      if (bci >= exhandlers.start_pc(i)) {
--        verify_error(ErrorContext::bad_code(bci),
--                     "Bad <init> method call from after the start of a try block");
--        return;
-+      u2 start_pc = exhandlers.start_pc(i);
-+      u2 end_pc = exhandlers.end_pc(i);
-+
-+      if (bci >= start_pc && bci < end_pc) {
-+        if (!ends_in_athrow(exhandlers.handler_pc(i))) {
-+          verify_error(ErrorContext::bad_code(bci),
-+            "Bad <init> method call from after the start of a try block");
-+          return;
-+        } else if (VerboseVerification) {
-+          ResourceMark rm;
-+          tty->print_cr(
-+            "Survived call to ends_in_athrow(): %s",
-+                        current_class()->name()->as_C_string());
-+        }
-       }
-     }
- 
-diff -r 4b7acf32a20d -r d6cb97651f0b src/share/vm/classfile/verifier.hpp
---- openjdk/hotspot/src/share/vm/classfile/verifier.hpp	Tue Aug 19 04:13:50 2014 -0700
-+++ openjdk/hotspot/src/share/vm/classfile/verifier.hpp	Tue Aug 12 20:29:25 2014 -0400
-@@ -30,6 +30,7 @@
- #include "oops/klass.hpp"
- #include "oops/methodOop.hpp"
- #include "runtime/handles.hpp"
-+#include "utilities/growableArray.hpp"
- #include "utilities/exceptions.hpp"
- 
- // The verifier class
-@@ -304,6 +305,16 @@
-     StackMapFrame* current_frame, u4 code_length, bool* this_uninit,
-     constantPoolHandle cp, TRAPS);
- 
-+  // Used by ends_in_athrow() to push all handlers that contain bci onto
-+  // the handler_stack, if the handler is not already on the stack.
-+  void push_handlers(ExceptionTable* exhandlers,
-+                     GrowableArray<u4>* handler_stack,
-+                     u4 bci);
-+
-+  // Returns true if all paths starting with start_bc_offset end in athrow
-+  // bytecode or loop.
-+  bool ends_in_athrow(u4 start_bc_offset);
-+
-   void verify_invoke_instructions(
-     RawBytecodeStream* bcs, u4 code_length, StackMapFrame* current_frame,
-     bool* this_uninit, VerificationType return_type,
--- a/patches/hotspot/aarch64/8051012-verifier_regression.patch	Fri Nov 07 16:08:33 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,179 +0,0 @@
-# HG changeset patch
-# User hseigel
-# Date 1407294645 14400
-#      Tue Aug 05 23:10:45 2014 -0400
-# Node ID 342e3e35fdc12a05d4ad6140ebf134842c08efd0
-# Parent  44a114f679c20a364b44d5ac98dbb29746fe8ba7
-8051012: Regression in verifier for <init> method call from inside of a branch
-Summary: Fix stackmap matching for branches.
-Reviewed-by: coleenp, lfoltan, acorn
-
-diff -r 44a114f679c2 -r 342e3e35fdc1 src/share/vm/classfile/stackMapTable.cpp
---- openjdk/hotspot/src/share/vm/classfile/stackMapTable.cpp	Tue Aug 05 13:49:42 2014 +0100
-+++ openjdk/hotspot/src/share/vm/classfile/stackMapTable.cpp	Tue Aug 05 23:10:45 2014 -0400
-@@ -70,24 +70,26 @@
- 
- bool StackMapTable::match_stackmap(
-     StackMapFrame* frame, int32_t target,
--    bool match, bool update, ErrorContext* ctx, TRAPS) const {
-+    bool match, bool update, bool handler, ErrorContext* ctx, TRAPS) const {
-   int index = get_index_from_offset(target);
--  return match_stackmap(frame, target, index, match, update, ctx, THREAD);
-+  return match_stackmap(frame, target, index, match, update, handler, ctx, THREAD);
- }
- 
- // Match and/or update current_frame to the frame in stackmap table with
- // specified offset and frame index. Return true if the two frames match.
-+// handler is true if the frame in stackmap_table is for an exception handler.
- //
--// The values of match and update are:                  _match__update_
-+// The values of match and update are:                  _match__update__handler
- //
--// checking a branch target/exception handler:           true   false
-+// checking a branch target:                             true   false   false
-+// checking an exception handler:                        true   false   true
- // linear bytecode verification following an
--// unconditional branch:                                 false  true
-+// unconditional branch:                                 false  true    false
- // linear bytecode verification not following an
--// unconditional branch:                                 true   true
-+// unconditional branch:                                 true   true    false
- bool StackMapTable::match_stackmap(
-     StackMapFrame* frame, int32_t target, int32_t frame_index,
--    bool match, bool update, ErrorContext* ctx, TRAPS) const {
-+    bool match, bool update, bool handler, ErrorContext* ctx, TRAPS) const {
-   if (frame_index < 0 || frame_index >= _frame_count) {
-     *ctx = ErrorContext::missing_stackmap(frame->offset());
-     frame->verifier()->verify_error(
-@@ -98,11 +100,9 @@
-   StackMapFrame *stackmap_frame = _frame_array[frame_index];
-   bool result = true;
-   if (match) {
--    // when checking handler target, match == true && update == false
--    bool is_exception_handler = !update;
-     // Has direct control flow from last instruction, need to match the two
-     // frames.
--    result = frame->is_assignable_to(stackmap_frame, is_exception_handler,
-+    result = frame->is_assignable_to(stackmap_frame, handler,
-         ctx, CHECK_VERIFY_(frame->verifier(), result));
-   }
-   if (update) {
-@@ -126,7 +126,7 @@
-     StackMapFrame* frame, int32_t target, TRAPS) const {
-   ErrorContext ctx;
-   bool match = match_stackmap(
--    frame, target, true, false, &ctx, CHECK_VERIFY(frame->verifier()));
-+    frame, target, true, false, false, &ctx, CHECK_VERIFY(frame->verifier()));
-   if (!match || (target < 0 || target >= _code_length)) {
-     frame->verifier()->verify_error(ctx,
-         "Inconsistent stackmap frames at branch target %d", target);
-@@ -134,7 +134,6 @@
-   }
-   // check if uninitialized objects exist on backward branches
-   check_new_object(frame, target, CHECK_VERIFY(frame->verifier()));
--  frame->verifier()->update_furthest_jump(target);
- }
- 
- void StackMapTable::check_new_object(
-diff -r 44a114f679c2 -r 342e3e35fdc1 src/share/vm/classfile/stackMapTable.hpp
---- openjdk/hotspot/src/share/vm/classfile/stackMapTable.hpp	Tue Aug 05 13:49:42 2014 +0100
-+++ openjdk/hotspot/src/share/vm/classfile/stackMapTable.hpp	Tue Aug 05 23:10:45 2014 -0400
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2003, 2014, 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
-@@ -74,12 +74,12 @@
-   // specified offset. Return true if the two frames match.
-   bool match_stackmap(
-     StackMapFrame* current_frame, int32_t offset,
--    bool match, bool update, ErrorContext* ctx, TRAPS) const;
-+    bool match, bool update, bool handler, ErrorContext* ctx, TRAPS) const;
-   // Match and/or update current_frame to the frame in stackmap table with
-   // specified offset and frame index. Return true if the two frames match.
-   bool match_stackmap(
-     StackMapFrame* current_frame, int32_t offset, int32_t frame_index,
--    bool match, bool update, ErrorContext* ctx, TRAPS) const;
-+    bool match, bool update, bool handler, ErrorContext* ctx, TRAPS) const;
- 
-   // Check jump instructions. Make sure there are no uninitialized
-   // instances on backward branch.
-diff -r 44a114f679c2 -r 342e3e35fdc1 src/share/vm/classfile/verifier.cpp
---- openjdk/hotspot/src/share/vm/classfile/verifier.cpp	Tue Aug 05 13:49:42 2014 +0100
-+++ openjdk/hotspot/src/share/vm/classfile/verifier.cpp	Tue Aug 05 23:10:45 2014 -0400
-@@ -630,8 +630,6 @@
-                                 // flow from current instruction to the next
-                                 // instruction in sequence
- 
--  set_furthest_jump(0);
--
-   Bytecodes::Code opcode;
-   while (!bcs.is_last_bytecode()) {
-     // Check for recursive re-verification before each bytecode.
-@@ -1788,7 +1786,7 @@
-       // If matched, current_frame will be updated by this method.
-       bool matches = stackmap_table->match_stackmap(
-         current_frame, this_offset, stackmap_index,
--        !no_control_flow, true, &ctx, CHECK_VERIFY_(this, 0));
-+        !no_control_flow, true, false, &ctx, CHECK_VERIFY_(this, 0));
-       if (!matches) {
-         // report type error
-         verify_error(ctx, "Instruction type does not match stack map");
-@@ -1835,7 +1833,7 @@
-       }
-       ErrorContext ctx;
-       bool matches = stackmap_table->match_stackmap(
--        new_frame, handler_pc, true, false, &ctx, CHECK_VERIFY(this));
-+        new_frame, handler_pc, true, false, true, &ctx, CHECK_VERIFY(this));
-       if (!matches) {
-         verify_error(ctx, "Stack map does not match the one at "
-             "exception handler %d", handler_pc);
-@@ -2243,13 +2241,6 @@
-       return;
-     }
- 
--    // Make sure that this call is not jumped over.
--    if (bci < furthest_jump()) {
--      verify_error(ErrorContext::bad_code(bci),
--                   "Bad <init> method call from inside of a branch");
--      return;
--    }
--
-     // Make sure that this call is not done from within a TRY block because
-     // that can result in returning an incomplete object.  Simply checking
-     // (bci >= start_pc) also ensures that this call is not done after a TRY
-diff -r 44a114f679c2 -r 342e3e35fdc1 src/share/vm/classfile/verifier.hpp
---- openjdk/hotspot/src/share/vm/classfile/verifier.hpp	Tue Aug 05 13:49:42 2014 +0100
-+++ openjdk/hotspot/src/share/vm/classfile/verifier.hpp	Tue Aug 05 23:10:45 2014 -0400
-@@ -256,9 +256,6 @@
- 
-   ErrorContext _error_context;  // contains information about an error
- 
--  // Used to detect illegal jumps over calls to super() and this() in ctors.
--  int32_t _furthest_jump;
--
-   void verify_method(methodHandle method, TRAPS);
-   char* generate_code_data(methodHandle m, u4 code_length, TRAPS);
-   void verify_exception_handler_table(u4 code_length, char* code_data,
-@@ -402,19 +399,6 @@
- 
-   TypeOrigin ref_ctx(const char* str, TRAPS);
- 
--  // Keep track of the furthest branch done in a method to make sure that
--  // there are no branches over calls to super() or this() from inside of
--  // a constructor.
--  int32_t furthest_jump() { return _furthest_jump; }
--
--  void set_furthest_jump(int32_t target) {
--    _furthest_jump = target;
--  }
--
--  void update_furthest_jump(int32_t target) {
--    if (target > _furthest_jump) _furthest_jump = target;
--  }
--
- };
- 
- inline int ClassVerifier::change_sig_to_verificationType(