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>