Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Dec 2013 23:20:35 +0000 (UTC)
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r335646 - in head/java: openjdk6 openjdk6-jre openjdk6/files/icedtea/openjdk
Message-ID:  <201312042320.rB4NKZlV034806@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jkim
Date: Wed Dec  4 23:20:35 2013
New Revision: 335646
URL: http://svnweb.freebsd.org/changeset/ports/335646

Log:
  Add multiple security patches and improvements from IcedTea6.
  
  http://icedtea.classpath.org/hg/icedtea6/rev/e98b0ef70b26
  
  Obtained from:	IcedTea Project

Added:
  head/java/openjdk6/files/icedtea/openjdk/
  head/java/openjdk6/files/icedtea/openjdk/4075303-javap_update.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/4111861-static_fields.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/4501661-disallow_mixing.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/4884240-javap_additional_option.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6708729-javap_makefile_update.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6715767-javap_crash.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6819246-javap_instruction_decoding.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6824493-experimental.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6841419-classfile_iterator.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6841420-classfile_methods.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6843013-missing_experimental.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6852856-javap_subclasses.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6867671-javap_whitespace.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6868539-constant_pool_tags.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6902264-fix_indentation.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/6954275-big_xml_signatures.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/7146431-java.security_files.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/7196533-timezone_bottleneck.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8000450-restrict_access.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8002070-remove_logger_stack_search.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8003992-embedded_nulls.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8004188-rename_java.security.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8006882-jmockit.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8006900-new_date_time.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8008589-better_mbean_permission_validation.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8010118-caller_sensitive.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8010727-empty_logger_name.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8010939-logmanager_deadlock.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8011071-better_crypto_provider_handling.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8011081-improve_jhat.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8011139-revise_checking_getenclosingclass.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8011157-improve_corba_portability-jdk.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8011157-improve_corba_portability.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8011990-logger_test_urls.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8012071-better_bean_building.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8012147-improve_tool.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8012243-serial_regression.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8012277-improve_dataflavour.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8012425-transform_transformfactory.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8012453-runtime.exec.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8012617-arrayindexoutofbounds_linebreakmeasurer.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8013380-logger_stack_walk_glassfish.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8013503-improve_stream_factories.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8013506-better_pack200.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8013510-augment_image_writing.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8013514-improve_cmap_stability.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8013739-better_ldap_resource_management.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8013744-better_tabling.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8013827-createtempfile_hang.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014085-better_serialization.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014093-improve_image_parsing.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014102-improve_image_conversion.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014341-better_kerberos_service.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014349-getdeclaredclass_fix.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014530-better_dsp.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014534-better_profiling.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014718-remove_logging_suntoolkit.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014745-logger_stack_walk_switch.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8014987-augment_serialization.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8015144-performance_regression.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8015614-update_build.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8015731-auth_improvements.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8015743-address_internet_addresses.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8015965-typo_in_property_name.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8015978-incorrect_transformation.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8016256-finalization_final.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8016357-update_hs_diagnostic_class.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8016653-ignoreable_characters.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8016675-robust_javadoc.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8017196-ensure_proxies_are_handled_appropriately-jdk.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8017196-ensure_proxies_are_handled_appropriately.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8017287-better_resource_disposal.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8017291-cast_proxies_aside.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8017298-better_xml_support.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8017300-improve_interface_implementation.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8017505-better_client_service.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8017566-backout_part_of_8000450.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8019292-better_attribute_value_exceptions.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8019584-invalid_notification_fix.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8019617-better_view_of_objects.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8019969-inet6_test_case_fix.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8019979-better_access_test.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8020293-jvm_crash.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8020943-memory_leak.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8021290-signature_validation.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8021355-splashscreen_regression.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8021366-jaxp_test_fix-01.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8021577-bean_serialization_fix.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8021933-jaxp_test_fix-02.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8021969-jnlp_load_failure.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8022661-writeobject_flush.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8022682-supporting_xom.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8022940-enhance_corba_translations.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8023457-tracing_mutex.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8023478-hs_crash.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8023683-enhance_class_file_parsing.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8023964-ignore_test.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8024914-swapped_usage.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/8025128-createtempfile_absolute_prefix.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/oj6-19-fix_8010118_test_cases.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/oj6-20-merge.patch   (contents, props changed)
  head/java/openjdk6/files/icedtea/openjdk/oj6-21-overrides.patch   (contents, props changed)
Modified:
  head/java/openjdk6-jre/Makefile
  head/java/openjdk6/Makefile
  head/java/openjdk6/Makefile.icedtea

Modified: head/java/openjdk6-jre/Makefile
==============================================================================
--- head/java/openjdk6-jre/Makefile	Wed Dec  4 22:31:40 2013	(r335645)
+++ head/java/openjdk6-jre/Makefile	Wed Dec  4 23:20:35 2013	(r335646)
@@ -1,6 +1,6 @@
 # $FreeBSD$
 
-PORTREVISION=	5
+PORTREVISION=	6
 CATEGORIES=	java devel
 PKGNAMESUFFIX=	-jre
 

Modified: head/java/openjdk6/Makefile
==============================================================================
--- head/java/openjdk6/Makefile	Wed Dec  4 22:31:40 2013	(r335645)
+++ head/java/openjdk6/Makefile	Wed Dec  4 23:20:35 2013	(r335646)
@@ -3,7 +3,7 @@
 
 PORTNAME=	openjdk6
 PORTVERSION=	b28
-PORTREVISION?=	5
+PORTREVISION?=	6
 CATEGORIES=	java devel
 MASTER_SITES=	${MASTER_SITE_APACHE:S,%SUBDIR%/,ant/binaries/:ant,} \
 		http://download.java.net/openjdk/jtreg/promoted/4.1/b05/:jtreg \

Modified: head/java/openjdk6/Makefile.icedtea
==============================================================================
--- head/java/openjdk6/Makefile.icedtea	Wed Dec  4 22:31:40 2013	(r335645)
+++ head/java/openjdk6/Makefile.icedtea	Wed Dec  4 23:20:35 2013	(r335646)
@@ -1,6 +1,108 @@
 # $FreeBSD$
 
-_PATCHES=
+_PATCHES= \
+	openjdk/8017196-ensure_proxies_are_handled_appropriately.patch \
+	openjdk/8011157-improve_corba_portability.patch \
+	openjdk/8022940-enhance_corba_translations.patch \
+	openjdk/8013503-improve_stream_factories.patch \
+	openjdk/8012425-transform_transformfactory.patch \
+	openjdk/8017298-better_xml_support.patch \
+	openjdk/8014530-better_dsp.patch \
+	openjdk/8021366-jaxp_test_fix-01.patch \
+	openjdk/8021933-jaxp_test_fix-02.patch \
+	openjdk/8022682-supporting_xom.patch \
+	openjdk/8015978-incorrect_transformation.patch \
+	openjdk/oj6-20-merge.patch \
+	openjdk/8024914-swapped_usage.patch \
+	openjdk/8017505-better_client_service.patch \
+	openjdk/8015614-update_build.patch \
+	openjdk/8016256-finalization_final.patch \
+	openjdk/8023683-enhance_class_file_parsing.patch \
+	openjdk/8023457-tracing_mutex.patch \
+	openjdk/8020943-memory_leak.patch \
+	openjdk/8023478-hs_crash.patch \
+	openjdk/4075303-javap_update.patch \
+	openjdk/6819246-javap_instruction_decoding.patch \
+	openjdk/6715767-javap_crash.patch \
+	openjdk/6841420-classfile_methods.patch \
+	openjdk/6841419-classfile_iterator.patch \
+	openjdk/4111861-static_fields.patch \
+	openjdk/4884240-javap_additional_option.patch \
+	openjdk/6852856-javap_subclasses.patch \
+	openjdk/6867671-javap_whitespace.patch \
+	openjdk/6868539-constant_pool_tags.patch \
+	openjdk/4501661-disallow_mixing.patch \
+	openjdk/6824493-experimental.patch \
+	openjdk/6843013-missing_experimental.patch \
+	openjdk/6902264-fix_indentation.patch \
+	openjdk/8016675-robust_javadoc.patch \
+	openjdk/8016653-ignoreable_characters.patch \
+	openjdk/7196533-timezone_bottleneck.patch \
+	openjdk/8006900-new_date_time.patch \
+	openjdk/8008589-better_mbean_permission_validation.patch \
+	openjdk/8011071-better_crypto_provider_handling.patch \
+	openjdk/8011081-improve_jhat.patch \
+	openjdk/8011157-improve_corba_portability-jdk.patch \
+	openjdk/8012071-better_bean_building.patch \
+	openjdk/8012147-improve_tool.patch \
+	openjdk/8012277-improve_dataflavour.patch \
+	openjdk/8013506-better_pack200.patch \
+	openjdk/8013510-augment_image_writing.patch \
+	openjdk/8013514-improve_cmap_stability.patch \
+	openjdk/8013744-better_tabling.patch \
+	openjdk/8014085-better_serialization.patch \
+	openjdk/8014093-improve_image_parsing.patch \
+	openjdk/8014102-improve_image_conversion.patch \
+	openjdk/8014341-better_kerberos_service.patch \
+	openjdk/8014534-better_profiling.patch \
+	openjdk/8014987-augment_serialization.patch \
+	openjdk/8015731-auth_improvements.patch \
+	openjdk/8015743-address_internet_addresses.patch \
+	openjdk/8016357-update_hs_diagnostic_class.patch \
+	openjdk/8002070-remove_logger_stack_search.patch \
+	openjdk/6708729-javap_makefile_update.patch \
+	openjdk/8010118-caller_sensitive.patch \
+	openjdk/oj6-19-fix_8010118_test_cases.patch \
+	openjdk/8010727-empty_logger_name.patch \
+	openjdk/8010939-logmanager_deadlock.patch \
+	openjdk/8011990-logger_test_urls.patch \
+	openjdk/8013380-logger_stack_walk_glassfish.patch \
+	openjdk/8014745-logger_stack_walk_switch.patch \
+	openjdk/8012243-serial_regression.patch \
+	openjdk/8014718-remove_logging_suntoolkit.patch \
+	openjdk/8011139-revise_checking_getenclosingclass.patch \
+	openjdk/8017196-ensure_proxies_are_handled_appropriately-jdk.patch \
+	openjdk/8017287-better_resource_disposal.patch \
+	openjdk/8017291-cast_proxies_aside.patch \
+	openjdk/7146431-java.security_files.patch \
+	openjdk/8006882-jmockit.patch \
+	openjdk/8000450-restrict_access.patch \
+	openjdk/8019979-better_access_test.patch \
+	openjdk/8004188-rename_java.security.patch \
+	openjdk/8017566-backout_part_of_8000450.patch \
+	openjdk/8017300-improve_interface_implementation.patch \
+	openjdk/8019292-better_attribute_value_exceptions.patch \
+	openjdk/8019617-better_view_of_objects.patch \
+	openjdk/8012617-arrayindexoutofbounds_linebreakmeasurer.patch \
+	openjdk/8020293-jvm_crash.patch \
+	openjdk/8013739-better_ldap_resource_management.patch \
+	openjdk/8014349-getdeclaredclass_fix.patch \
+	openjdk/6954275-big_xml_signatures.patch \
+	openjdk/8021290-signature_validation.patch \
+	openjdk/8012453-runtime.exec.patch \
+	openjdk/8015965-typo_in_property_name.patch \
+	openjdk/8015144-performance_regression.patch \
+	openjdk/8019969-inet6_test_case_fix.patch \
+	openjdk/8019584-invalid_notification_fix.patch \
+	openjdk/8021577-bean_serialization_fix.patch \
+	openjdk/8021969-jnlp_load_failure.patch \
+	openjdk/8021355-splashscreen_regression.patch \
+	openjdk/8022661-writeobject_flush.patch \
+	openjdk/8023964-ignore_test.patch \
+	openjdk/8003992-embedded_nulls.patch \
+	openjdk/8013827-createtempfile_hang.patch \
+	openjdk/8025128-createtempfile_absolute_prefix.patch \
+	openjdk/oj6-21-overrides.patch
 
 .if ${PORT_OPTIONS:MICEDTEA}
 _PATCHES+= \

Added: head/java/openjdk6/files/icedtea/openjdk/4075303-javap_update.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/java/openjdk6/files/icedtea/openjdk/4075303-javap_update.patch	Wed Dec  4 23:20:35 2013	(r335646)
@@ -0,0 +1,12081 @@
+# HG changeset patch
+# User jjg
+# Date 1382400229 -3600
+#      Tue Oct 22 01:03:49 2013 +0100
+# Node ID bfd7bb4218253bac4f57abbc90b987f16e4b7f6c
+# Parent  8e38c8fe0a0beaef943e754071be0358c34e76dd
+4075303: Use javap to enquire about a specific inner class
+4348375: Javap is not internationalized
+4459541: "javap -l" shows line numbers as signed short; they should be unsigned
+4501660: change diagnostic of -help as 'print this help message and exit'
+4776241: unused source file in javap...
+4870651: javap should recognize generics, varargs, enum
+4876942: javap invoked without args does not print help screen
+4880663: javap could output whitespace between class name and opening brace
+4975569: javap doesn't print new flag bits
+6271787: javap dumps LocalVariableTypeTable attribute in hex, needs to print a table
+6305779: javap: support annotations
+6439940: Clean up javap implementation
+6469569: wrong check of searchpath in JavapEnvironment
+6474890: javap does not open .zip files in -classpath
+6587786: Javap throws error : "ERROR:Could not find <classname>" for JRE classes
+6622215: javap ignores certain relevant access flags
+6622216: javap names some attributes incorrectly
+6622232: javap gets whitespace confused
+6622260: javap prints negative bytes incorrectly in hex
+Reviewed-by: ksrini
+
+diff -r 8e38c8fe0a0b -r bfd7bb421825 make/build.properties
+--- langtools/make/build.properties	Fri Oct 04 12:22:34 2013 -0400
++++ langtools/make/build.properties	Tue Oct 22 01:03:49 2013 +0100
+@@ -130,6 +130,8 @@
+ #
+ 
+ javap.includes = \
++	com/sun/tools/classfile/ \
++	com/sun/tools/javap/ \
+         sun/tools/javap/
+ 
+ javap.tests = \
+diff -r 8e38c8fe0a0b -r bfd7bb421825 make/build.xml
+--- langtools/make/build.xml	Fri Oct 04 12:22:34 2013 -0400
++++ langtools/make/build.xml	Tue Oct 22 01:03:49 2013 +0100
+@@ -316,14 +316,15 @@
+                               jarmainclass="sun.tools.javap.Main"/>
+     </target>
+ 
+-    <target name="build-classes-javap" depends="build-bootstrap-javac">
++    <target name="build-classes-javap" depends="build-classes-javac">
+         <build-classes name="javap" includes="${javap.includes}"/>
+     </target>
+ 
+-    <target name="build-javap" depends="build-bootstrap-javac">
++    <target name="build-javap" depends="build-javac">
+         <build-tool name="javap"
+                     includes="${javap.includes}"
+-                    jarmainclass="sun.tools.javap.Main"/>
++                    jarmainclass="sun.tools.javap.Main"
++                    jarclasspath="javac.jar"/>
+     </target>
+ 
+     <!-- (no javadoc for javap) -->
+diff -r 8e38c8fe0a0b -r bfd7bb421825 src/share/classes/com/sun/tools/classfile/AccessFlags.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ langtools/src/share/classes/com/sun/tools/classfile/AccessFlags.java	Tue Oct 22 01:03:49 2013 +0100
+@@ -0,0 +1,254 @@
++/*
++ * Copyright 2007 Sun Microsystems, Inc.  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.  Sun designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
++ * CA 95054 USA or visit www.sun.com if you need additional information or
++ * have any questions.
++ */
++
++package com.sun.tools.classfile;
++
++import java.io.IOException;
++import java.util.LinkedHashSet;
++import java.util.Set;
++
++/**
++ * See JVMS3, sections 4.2, 4.6, 4.7.
++ *
++ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
++ *  you write code that depends on this, you do so at your own risk.
++ *  This code and its internal interfaces are subject to change or
++ *  deletion without notice.</b>
++ */
++public class AccessFlags {
++    public static final int ACC_PUBLIC        = 0x0001; // class, inner, field, method
++    public static final int ACC_PRIVATE       = 0x0002; //        inner, field, method
++    public static final int ACC_PROTECTED     = 0x0004; //        inner, field, method
++    public static final int ACC_STATIC        = 0x0008; //        inner, field, method
++    public static final int ACC_FINAL         = 0x0010; // class, inner, field, method
++    public static final int ACC_SUPER         = 0x0020; // class
++    public static final int ACC_SYNCHRONIZED  = 0x0020; //                      method
++    public static final int ACC_VOLATILE      = 0x0040; //               field
++    public static final int ACC_BRIDGE        = 0x0040; //                      method
++    public static final int ACC_TRANSIENT     = 0x0080; //               field
++    public static final int ACC_VARARGS       = 0x0080; //                      method
++    public static final int ACC_NATIVE        = 0x0100; //                      method
++    public static final int ACC_INTERFACE     = 0x0200; // class, inner
++    public static final int ACC_ABSTRACT      = 0x0400; // class, inner,        method
++    public static final int ACC_STRICT        = 0x0800; //                      method
++    public static final int ACC_SYNTHETIC     = 0x1000; // class, inner, field, method
++    public static final int ACC_ANNOTATION    = 0x2000; // class, inner
++    public static final int ACC_ENUM          = 0x4000; // class, inner, field
++    public static final int ACC_MODULE        = 0x8000; // class, inner, field, method
++
++    private static enum Type { Class, InnerClass, Field, Method};
++
++    AccessFlags(ClassReader cr) throws IOException {
++        this(cr.readUnsignedShort());
++    }
++
++    public AccessFlags(int flags) {
++        this.flags = flags;
++    }
++
++    public AccessFlags ignore(int mask) {
++        return new AccessFlags(flags & ~mask);
++    }
++
++    public boolean is(int mask) {
++        return (flags & mask) != 0;
++    }
++
++    private static final int[] classModifiers = {
++        ACC_PUBLIC, ACC_FINAL, ACC_ABSTRACT, ACC_MODULE
++    };
++
++    private static final int[] classFlags = {
++        ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_INTERFACE, ACC_ABSTRACT,
++        ACC_SYNTHETIC, ACC_ANNOTATION, ACC_ENUM, ACC_MODULE
++    };
++
++    public Set<String> getClassModifiers() {
++        int f = ((flags & ACC_INTERFACE) != 0 ? flags & ~ACC_ABSTRACT : flags);
++        return getModifiers(f, classModifiers, Type.Class);
++    }
++
++    public Set<String> getClassFlags() {
++        return getFlags(classFlags, Type.Class);
++    }
++
++    private static final int[] innerClassModifiers = {
++        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
++        ACC_ABSTRACT, ACC_MODULE
++    };
++
++    private static final int[] innerClassFlags = {
++        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL, ACC_SUPER,
++        ACC_INTERFACE, ACC_ABSTRACT, ACC_SYNTHETIC, ACC_ANNOTATION, ACC_ENUM, ACC_MODULE
++    };
++
++    public Set<String> getInnerClassModifiers() {
++        int f = ((flags & ACC_INTERFACE) != 0 ? flags & ~ACC_ABSTRACT : flags);
++        return getModifiers(f, innerClassModifiers, Type.InnerClass);
++    }
++
++    public Set<String> getInnerClassFlags() {
++        return getFlags(innerClassFlags, Type.InnerClass);
++    }
++
++    private static final int[] fieldModifiers = {
++        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
++        ACC_VOLATILE, ACC_TRANSIENT, ACC_MODULE
++    };
++
++    private static final int[] fieldFlags = {
++        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
++        ACC_VOLATILE, ACC_TRANSIENT, ACC_SYNTHETIC, ACC_ENUM, ACC_MODULE
++    };
++
++    public Set<String> getFieldModifiers() {
++        return getModifiers(fieldModifiers, Type.Field);
++    }
++
++    public Set<String> getFieldFlags() {
++        return getFlags(fieldFlags, Type.Field);
++    }
++
++    private static final int[] methodModifiers = {
++        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
++        ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT, ACC_STRICT, ACC_MODULE
++    };
++
++    private static final int[] methodFlags = {
++        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
++        ACC_SYNCHRONIZED, ACC_BRIDGE, ACC_VARARGS, ACC_NATIVE, ACC_ABSTRACT,
++        ACC_STRICT, ACC_SYNTHETIC, ACC_MODULE
++    };
++
++    public Set<String> getMethodModifiers() {
++        return getModifiers(methodModifiers, Type.Method);
++    }
++
++    public Set<String> getMethodFlags() {
++        return getFlags(methodFlags, Type.Method);
++    }
++
++    private Set<String> getModifiers(int[] modifierFlags, Type t) {
++        return getModifiers(flags, modifierFlags, t);
++    }
++
++    private static Set<String> getModifiers(int flags, int[] modifierFlags, Type t) {
++        Set<String> s = new LinkedHashSet<String>();
++        for (int m: modifierFlags) {
++            if ((flags & m) != 0)
++                s.add(flagToModifier(m, t));
++        }
++        return s;
++    }
++
++    private Set<String> getFlags(int[] expectedFlags, Type t) {
++        Set<String> s = new LinkedHashSet<String>();
++        int f = flags;
++        for (int e: expectedFlags) {
++            if ((f & e) != 0) {
++                s.add(flagToName(e, t));
++                f = f & ~e;
++            }
++        }
++        while (f != 0) {
++            int bit = Integer.highestOneBit(f);
++            s.add("0x" + Integer.toHexString(bit));
++            f = f & ~bit;
++        }
++        return s;
++    }
++
++    private static String flagToModifier(int flag, Type t) {
++        switch (flag) {
++            case ACC_PUBLIC:
++                return "public";
++            case ACC_PRIVATE:
++                return "private";
++            case ACC_PROTECTED:
++                return "protected";
++            case ACC_STATIC:
++                return "static";
++            case ACC_FINAL:
++                return "final";
++            case ACC_SYNCHRONIZED:
++                return "synchronized";
++            case 0x80:
++                return (t == Type.Field ? "transient" : null);
++            case ACC_VOLATILE:
++                return "volatile";
++            case ACC_NATIVE:
++                return "native";
++            case ACC_ABSTRACT:
++                return "abstract";
++            case ACC_STRICT:
++                return "strictfp";
++            case ACC_MODULE:
++                return "module";
++            default:
++                return null;
++        }
++    }
++
++    private static String flagToName(int flag, Type t) {
++        switch (flag) {
++        case ACC_PUBLIC:
++            return "ACC_PUBLIC";
++        case ACC_PRIVATE:
++            return "ACC_PRIVATE";
++        case ACC_PROTECTED:
++            return "ACC_PROTECTED";
++        case ACC_STATIC:
++            return "ACC_STATIC";
++        case ACC_FINAL:
++            return "ACC_FINAL";
++        case 0x20:
++            return (t == Type.Class ? "ACC_SUPER" : "ACC_SYNCHRONIZED");
++        case 0x40:
++            return (t == Type.Field ? "ACC_VOLATILE" : "ACC_BRIDGE");
++        case 0x80:
++            return (t == Type.Field ? "ACC_TRANSIENT" : "ACC_VARARGS");
++        case ACC_NATIVE:
++            return "ACC_NATIVE";
++        case ACC_INTERFACE:
++            return "ACC_INTERFACE";
++        case ACC_ABSTRACT:
++            return "ACC_ABSTRACT";
++        case ACC_STRICT:
++            return "ACC_STRICT";
++        case ACC_SYNTHETIC:
++            return "ACC_SYNTHETIC";
++        case ACC_ANNOTATION:
++            return "ACC_ANNOTATION";
++        case ACC_ENUM:
++            return "ACC_ENUM";
++        case ACC_MODULE:
++            return "ACC_MODULE";
++        default:
++            return null;
++        }
++    }
++
++    final int flags;
++}
+diff -r 8e38c8fe0a0b -r bfd7bb421825 src/share/classes/com/sun/tools/classfile/Annotation.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ langtools/src/share/classes/com/sun/tools/classfile/Annotation.java	Tue Oct 22 01:03:49 2013 +0100
+@@ -0,0 +1,243 @@
++/*
++ * Copyright 2007 Sun Microsystems, Inc.  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.  Sun designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
++ * CA 95054 USA or visit www.sun.com if you need additional information or
++ * have any questions.
++ */
++
++package com.sun.tools.classfile;
++
++import java.io.IOException;
++
++/**
++ * See JVMS3, section 4.8.16.
++ *
++ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
++ *  you write code that depends on this, you do so at your own risk.
++ *  This code and its internal interfaces are subject to change or
++ *  deletion without notice.</b>
++ */
++public class Annotation {
++    static class InvalidAnnotation extends AttributeException {
++        InvalidAnnotation(String msg) {
++            super(msg);
++        }
++    }
++
++    Annotation(ClassReader cr) throws IOException, InvalidAnnotation {
++        type_index = cr.readUnsignedShort();
++        num_element_value_pairs = cr.readUnsignedShort();
++        element_value_pairs = new element_value_pair[num_element_value_pairs];
++        for (int i = 0; i < element_value_pairs.length; i++)
++            element_value_pairs[i] = new element_value_pair(cr);
++    }
++
++    public Annotation(ConstantPool constant_pool,
++            int type_index,
++            element_value_pair[] element_value_pairs) {
++        this.type_index = type_index;
++        num_element_value_pairs = element_value_pairs.length;
++        this.element_value_pairs = element_value_pairs;
++    }
++
++    public int length() {
++        int n = 2 /*type_index*/ + 2 /*num_element_value_pairs*/;
++        for (element_value_pair pair: element_value_pairs)
++            n += pair.length();
++        return n;
++    }
++
++    public final int type_index;
++    public final int num_element_value_pairs;
++    public final element_value_pair element_value_pairs[];
++
++    /**
++     * See JVMS3, section 4.8.16.1.
++     */
++    public static abstract class element_value {
++        public static element_value read(ClassReader cr)
++                throws IOException, InvalidAnnotation {
++            int tag = cr.readUnsignedByte();
++            switch (tag) {
++            case 'B':
++            case 'C':
++            case 'D':
++            case 'F':
++            case 'I':
++            case 'J':
++            case 'S':
++            case 'Z':
++            case 's':
++                return new Primitive_element_value(cr, tag);
++
++            case 'e':
++                return new Enum_element_value(cr, tag);
++
++            case 'c':
++                return new Class_element_value(cr, tag);
++
++            case '@':
++                return new Annotation_element_value(cr, tag);
++
++            case '[':
++                return new Array_element_value(cr, tag);
++
++            default:
++                throw new InvalidAnnotation("unrecognized tag: " + tag);
++            }
++        }
++
++        protected element_value(int tag) {
++            this.tag = tag;
++        }
++
++        public abstract int length();
++
++        public abstract <R,P> R accept(Visitor<R,P> visitor, P p);
++
++        public interface Visitor<R,P> {
++            R visitPrimitive(Primitive_element_value ev, P p);
++            R visitEnum(Enum_element_value ev, P p);
++            R visitClass(Class_element_value ev, P p);
++            R visitAnnotation(Annotation_element_value ev, P p);
++            R visitArray(Array_element_value ev, P p);
++        }
++
++        public final int tag;
++    }
++
++    public static class Primitive_element_value extends element_value {
++        Primitive_element_value(ClassReader cr, int tag) throws IOException {
++            super(tag);
++            const_value_index = cr.readUnsignedShort();
++        }
++
++        @Override
++        public int length() {
++            return 2;
++        }
++
++        public <R,P> R accept(Visitor<R,P> visitor, P p) {
++            return visitor.visitPrimitive(this, p);
++        }
++
++        public final int const_value_index;
++
++    }
++
++    public static class Enum_element_value extends element_value {
++        Enum_element_value(ClassReader cr, int tag) throws IOException {
++            super(tag);
++            type_name_index = cr.readUnsignedShort();
++            const_name_index = cr.readUnsignedShort();
++        }
++
++        @Override
++        public int length() {
++            return 4;
++        }
++
++        public <R,P> R accept(Visitor<R,P> visitor, P p) {
++            return visitor.visitEnum(this, p);
++        }
++
++        public final int type_name_index;
++        public final int const_name_index;
++    }
++
++    public static class Class_element_value extends element_value {
++        Class_element_value(ClassReader cr, int tag) throws IOException {
++            super(tag);
++            class_info_index = cr.readUnsignedShort();
++        }
++
++        @Override
++        public int length() {
++            return 2;
++        }
++
++        public <R,P> R accept(Visitor<R,P> visitor, P p) {
++            return visitor.visitClass(this, p);
++        }
++
++        public final int class_info_index;
++    }
++
++    public static class Annotation_element_value extends element_value {
++        Annotation_element_value(ClassReader cr, int tag)
++                throws IOException, InvalidAnnotation {
++            super(tag);
++            annotation_value = new Annotation(cr);
++        }
++
++        @Override
++        public int length() {
++            return annotation_value.length();
++        }
++
++        public <R,P> R accept(Visitor<R,P> visitor, P p) {
++            return visitor.visitAnnotation(this, p);
++        }
++
++        public final Annotation annotation_value;
++    }
++
++    public static class Array_element_value extends element_value {
++        Array_element_value(ClassReader cr, int tag)
++                throws IOException, InvalidAnnotation {
++            super(tag);
++            num_values = cr.readUnsignedShort();
++            values = new element_value[num_values];
++            for (int i = 0; i < values.length; i++)
++                values[i] = element_value.read(cr);
++        }
++
++        @Override
++        public int length() {
++            int n = 2;
++            for (int i = 0; i < values.length; i++)
++                n += values[i].length();
++            return n;
++        }
++
++        public <R,P> R accept(Visitor<R,P> visitor, P p) {
++            return visitor.visitArray(this, p);
++        }
++
++        public final int num_values;
++        public final element_value[] values;
++    }
++
++    public static class element_value_pair {
++        element_value_pair(ClassReader cr)
++                throws IOException, InvalidAnnotation {
++            element_name_index = cr.readUnsignedShort();
++            value = element_value.read(cr);
++        }
++
++        public int length() {
++            return 2 + value.length();
++        }
++
++        public final int element_name_index;
++        public final element_value value;
++    }
++}
+diff -r 8e38c8fe0a0b -r bfd7bb421825 src/share/classes/com/sun/tools/classfile/AnnotationDefault_attribute.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ langtools/src/share/classes/com/sun/tools/classfile/AnnotationDefault_attribute.java	Tue Oct 22 01:03:49 2013 +0100
+@@ -0,0 +1,61 @@
++/*
++ * Copyright 2007 Sun Microsystems, Inc.  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.  Sun designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
++ * CA 95054 USA or visit www.sun.com if you need additional information or
++ * have any questions.
++ */
++
++package com.sun.tools.classfile;
++
++import java.io.IOException;
++
++/**
++ * See JVMS3, section 4.8.15.
++ *
++ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
++ *  you write code that depends on this, you do so at your own risk.
++ *  This code and its internal interfaces are subject to change or
++ *  deletion without notice.</b>
++ */
++public class AnnotationDefault_attribute extends Attribute {
++    AnnotationDefault_attribute(ClassReader cr, int name_index, int length)
++            throws IOException, Annotation.InvalidAnnotation {
++        super(name_index, length);
++        default_value = Annotation.element_value.read(cr);
++    }
++
++    public AnnotationDefault_attribute(ConstantPool constant_pool, Annotation.element_value default_value)
++            throws ConstantPoolException {
++        this(constant_pool.getUTF8Index(Attribute.AnnotationDefault), default_value);
++    }
++
++    public AnnotationDefault_attribute(int name_index, Annotation.element_value default_value) {
++        super(name_index, default_value.length());
++        this.default_value = default_value;
++    }
++
++    public <R, D> R accept(Visitor<R, D> visitor, D data) {
++        return visitor.visitAnnotationDefault(this, data);
++    }
++
++    public final Annotation.element_value default_value;
++}
++
+diff -r 8e38c8fe0a0b -r bfd7bb421825 src/share/classes/com/sun/tools/classfile/Attribute.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ langtools/src/share/classes/com/sun/tools/classfile/Attribute.java	Tue Oct 22 01:03:49 2013 +0100
+@@ -0,0 +1,199 @@
++/*
++ * Copyright 2007 Sun Microsystems, Inc.  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.  Sun designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
++ * CA 95054 USA or visit www.sun.com if you need additional information or
++ * have any questions.
++ */
++
++package com.sun.tools.classfile;
++
++import java.io.IOException;
++import java.lang.reflect.Constructor;
++import java.util.HashMap;
++import java.util.Map;
++
++/**
++ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
++ *  you write code that depends on this, you do so at your own risk.
++ *  This code and its internal interfaces are subject to change or
++ *  deletion without notice.</b>
++ */
++
++public abstract class Attribute {
++    public static final String AnnotationDefault        = "AnnotationDefault";
++    public static final String CharacterRangeTable      = "CharacterRangeTable";
++    public static final String Code                     = "Code";
++    public static final String ConstantValue            = "ConstantValue";
++    public static final String CompilationID            = "CompilationID";
++    public static final String Deprecated               = "Deprecated";
++    public static final String EnclosingMethod          = "EnclosingMethod";
++    public static final String Exceptions               = "Exceptions";
++    public static final String InnerClasses             = "InnerClasses";
++    public static final String LineNumberTable          = "LineNumberTable";
++    public static final String LocalVariableTable       = "LocalVariableTable";
++    public static final String LocalVariableTypeTable   = "LocalVariableTypeTable";
++    public static final String RuntimeVisibleAnnotations = "RuntimeVisibleAnnotations";
++    public static final String RuntimeInvisibleAnnotations = "RuntimeInvisibleAnnotations";
++    public static final String RuntimeVisibleParameterAnnotations = "RuntimeVisibleParameterAnnotations";
++    public static final String RuntimeInvisibleParameterAnnotations = "RuntimeInvisibleParameterAnnotations";
++    public static final String Signature                = "Signature";
++    public static final String SourceDebugExtension     = "SourceDebugExtension";
++    public static final String SourceFile               = "SourceFile";
++    public static final String SourceID                 = "SourceID";
++    public static final String StackMap                 = "StackMap";
++    public static final String StackMapTable            = "StackMapTable";
++    public static final String Synthetic                = "Synthetic";
++
++    // JSR 277/294
++    public static final String Module                   = "Module";
++    public static final String ModuleExportTable        = "ModuleExportTable";
++    public static final String ModuleMemberTable        = "ModuleMemberTable";
++
++    public static class Factory {
++        public Factory() {
++            // defer init of standardAttributeClasses until after options set up
++        }
++
++        public void setCompat(boolean compat) {
++            this.compat = compat;
++        }
++
++        public void setJSR277(boolean jsr277) {
++            this.jsr277 = jsr277;
++        }
++
++        public Attribute createAttribute(ClassReader cr, int name_index, byte[] data)
++                throws IOException {
++            if (standardAttributes == null)
++                init();
++
++            ConstantPool cp = cr.getConstantPool();
++            try {
++                String name = cp.getUTF8Value(name_index);
++                Class<? extends Attribute> attrClass = standardAttributes.get(name);
++                if (attrClass != null) {
++                    try {
++                        Class<?>[] constrArgTypes = {ClassReader.class, int.class, int.class};
++                        Constructor<? extends Attribute> constr = attrClass.getDeclaredConstructor(constrArgTypes);
++                        return constr.newInstance(new Object[] { cr, name_index, data.length });
++                    } catch (Throwable t) {
++                        // fall through and use DefaultAttribute
++                        // t.printStackTrace();
++                    }
++                }
++            } catch (ConstantPoolException e) {
++                // fall through and use DefaultAttribute
++            }
++            return new DefaultAttribute(cr, name_index, data);
++        }
++
++        protected void init() {
++            standardAttributes = new HashMap<String,Class<? extends Attribute>>();
++            standardAttributes.put(AnnotationDefault, AnnotationDefault_attribute.class);
++            standardAttributes.put(CharacterRangeTable, CharacterRangeTable_attribute.class);
++            standardAttributes.put(Code,              Code_attribute.class);
++            standardAttributes.put(ConstantValue,     ConstantValue_attribute.class);
++            standardAttributes.put(Deprecated,        Deprecated_attribute.class);
++            standardAttributes.put(EnclosingMethod,   EnclosingMethod_attribute.class);
++            standardAttributes.put(Exceptions,        Exceptions_attribute.class);
++            standardAttributes.put(InnerClasses,      InnerClasses_attribute.class);
++            standardAttributes.put(LineNumberTable,   LineNumberTable_attribute.class);
++            standardAttributes.put(LocalVariableTable, LocalVariableTable_attribute.class);
++            standardAttributes.put(LocalVariableTypeTable, LocalVariableTypeTable_attribute.class);
++
++            if (jsr277) {
++                standardAttributes.put(Module,            Module_attribute.class);
++                standardAttributes.put(ModuleExportTable, ModuleExportTable_attribute.class);
++                standardAttributes.put(ModuleMemberTable, ModuleMemberTable_attribute.class);
++            }
++
++            if (!compat) { // old javap does not recognize recent attributes
++                standardAttributes.put(CompilationID, CompilationID_attribute.class);
++                standardAttributes.put(RuntimeInvisibleAnnotations, RuntimeInvisibleAnnotations_attribute.class);
++                standardAttributes.put(RuntimeInvisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations_attribute.class);
++                standardAttributes.put(RuntimeVisibleAnnotations, RuntimeVisibleAnnotations_attribute.class);
++                standardAttributes.put(RuntimeVisibleParameterAnnotations, RuntimeVisibleParameterAnnotations_attribute.class);
++                standardAttributes.put(Signature,     Signature_attribute.class);
++                standardAttributes.put(SourceID, SourceID_attribute.class);
++            }
++
++            standardAttributes.put(SourceDebugExtension, SourceDebugExtension_attribute.class);
++            standardAttributes.put(SourceFile,        SourceFile_attribute.class);
++            standardAttributes.put(StackMap,          StackMap_attribute.class);
++            standardAttributes.put(StackMapTable,     StackMapTable_attribute.class);
++            standardAttributes.put(Synthetic,         Synthetic_attribute.class);
++        }
++
++        private Map<String,Class<? extends Attribute>> standardAttributes;
++        private boolean compat; // don't support recent attrs in compatibility mode
++        private boolean jsr277; // support new jsr277 attrs
++    }
++
++    public static Attribute read(ClassReader cr) throws IOException {
++        return cr.readAttribute();
++    }
++
++    protected Attribute(int name_index, int length) {
++        attribute_name_index = name_index;
++        attribute_length = length;
++    }
++
++    public String getName(ConstantPool constant_pool) throws ConstantPoolException {
++        return constant_pool.getUTF8Value(attribute_name_index);
++    }
++
++    public abstract <R,D> R accept(Attribute.Visitor<R,D> visitor, D data);
++
++    public final int attribute_name_index;
++    public final int attribute_length;
++
++
++    public interface Visitor<R,P> {
++        R visitDefault(DefaultAttribute attr, P p);
++        R visitAnnotationDefault(AnnotationDefault_attribute attr, P p);
++        R visitCharacterRangeTable(CharacterRangeTable_attribute attr, P p);
++        R visitCode(Code_attribute attr, P p);
++        R visitCompilationID(CompilationID_attribute attr, P p);
++        R visitConstantValue(ConstantValue_attribute attr, P p);
++        R visitDeprecated(Deprecated_attribute attr, P p);
++        R visitEnclosingMethod(EnclosingMethod_attribute attr, P p);
++        R visitExceptions(Exceptions_attribute attr, P p);
++        R visitInnerClasses(InnerClasses_attribute attr, P p);
++        R visitLineNumberTable(LineNumberTable_attribute attr, P p);
++        R visitLocalVariableTable(LocalVariableTable_attribute attr, P p);
++        R visitLocalVariableTypeTable(LocalVariableTypeTable_attribute attr, P p);
++        R visitRuntimeVisibleAnnotations(RuntimeVisibleAnnotations_attribute attr, P p);
++        R visitRuntimeInvisibleAnnotations(RuntimeInvisibleAnnotations_attribute attr, P p);
++        R visitRuntimeVisibleParameterAnnotations(RuntimeVisibleParameterAnnotations_attribute attr, P p);
++        R visitRuntimeInvisibleParameterAnnotations(RuntimeInvisibleParameterAnnotations_attribute attr, P p);
++        R visitSignature(Signature_attribute attr, P p);
++        R visitSourceDebugExtension(SourceDebugExtension_attribute attr, P p);
++        R visitSourceFile(SourceFile_attribute attr, P p);
++        R visitSourceID(SourceID_attribute attr, P p);
++        R visitStackMap(StackMap_attribute attr, P p);
++        R visitStackMapTable(StackMapTable_attribute attr, P p);
++        R visitSynthetic(Synthetic_attribute attr, P p);
++
++        R visitModule(Module_attribute attr, P p);
++        R visitModuleExportTable(ModuleExportTable_attribute attr, P p);
++        R visitModuleMemberTable(ModuleMemberTable_attribute attr, P p);
++    }
++}
+diff -r 8e38c8fe0a0b -r bfd7bb421825 src/share/classes/com/sun/tools/classfile/AttributeException.java
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ langtools/src/share/classes/com/sun/tools/classfile/AttributeException.java	Tue Oct 22 01:03:49 2013 +0100
+@@ -0,0 +1,40 @@
++/*
++ * Copyright 2008 Sun Microsystems, Inc.  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.  Sun designates this
++ * particular file as subject to the "Classpath" exception as provided
++ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
++ * CA 95054 USA or visit www.sun.com if you need additional information or
++ * have any questions.
++ */
++
++package com.sun.tools.classfile;

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312042320.rB4NKZlV034806>