8024761: JSR 292 improve performance of generic invocation
Summary: use a per-MH one element cache for MH.asType to speed up MH.invoke; also cache enough MH constants to cache LMF.metafactory
Reviewed-by: twisti
#
# Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# This is the JDK used to build and run the bootstrap version of javac.
# The bootstrap javac is used to compile both boostrap versions of the
# other tools, and product versions of all the tools.
# Override this path as needed, either on the command line or in
# one of the standard user build.properties files (see build.xml)
# boot.java.home = /opt/jdk/1.7.0
boot.java = ${boot.java.home}/bin/java
boot.javac = ${boot.java.home}/bin/javac
boot.javac.source = 7
boot.javac.target = 7
# This is the JDK used to run the product version of the tools,
# for example, for testing. If you're building a complete JDK, specify that.
# Override this path as needed, either on the command line or in
# one of the standard user build.properties files (see build.xml)
# target.java.home = /opt/jdk/1.8.0
target.java = ${target.java.home}/bin/java
# Version info -- override as needed
jdk.version = 1.8.0
build.number = b00
milestone = internal
# FIXME -- these need to match the standard values
# If we include date in full.version (ie for developer build)
# we will need to make sure the build is idempotent (i.e.
# repeated builds don't rebuild the tools, because of new
# timestamps
# FIXME -- need to include openjdk as needed
release = ${jdk.version}-${milestone}
bootstrap.release = ${release}_bootstrap
full.version = ${release}-${build.number}
bootstrap.full.version = ${bootstrap.release}-${build.number}
# options for the <javac> tasks used to compile the tools
javac.source = 8
javac.target = 8
javac.debug = true
javac.debuglevel = source,lines
javac.no.jdk.warnings = -XDignore.symbol.file=true
# set the following to -version to verify the versions of javac being used
javac.version.opt =
# in time, there should be no exceptions to -Xlint:all
javac.lint.opts = -Xlint:all -Werror
# options for the <javadoc> task for javac
#javadoc.jls3.url=http://java.sun.com/docs/books/jls/
#javadoc.jls3.cite=<a href="${javadoc.jls3.url}">The Java Language Specification, Third Edition</a>
#javadoc.jls3.option=-tag "jls3:a:See <cite>${javadoc.jls3.cite}</cite>:"
javadoc.jls.cite=The Java™ Language Specification
javadoc.jls.option=-tag "jls:a:See <cite>${javadoc.jls.cite}</cite>:"
# jtreg, used to run the JDK regression tests
# See http://openjdk.java.net/jtreg/
# Override this path as needed, either on the command line or in
# one of the standard user build.properties files (see build.xml)
# jtreg.home = /opt/jtreg/4.1
# findbugs
# See http://findbugs.sourceforge.net/
# Override this path as needed, either on the command line or in
# one of the standard user build.properties files (see build.xml)
# findbugs.home = /opt/findbugs/1.2.1
# vizant (graph visualization tool for Ant)
# See http://vizant.sourceforge.net/
# Override this path as needed, either on the command line or in
# one of the standard user build.properties files (see build.xml)
# vizant.jar = /opt/vizant/0.1.2/vizant-0.1.2.jar
# dot = dot
#------------------------------------------------------------
# The following properties define the packages for each of the tools.
# Syntactically, they should be suitable as arguments for the "includes"
# parameter of Ant filesets. In particular, note the trailing '/'.
javac.includes = \
javax/annotation/processing/ \
javax/lang/model/ \
javax/tools/ \
jdk/ \
com/sun/source/ \
com/sun/tools/javac/ \
com/sun/tools/doclint/
javac.tests = \
tools/javac
#
javadoc.includes = \
com/sun/javadoc/ \
com/sun/tools/javadoc/
javadoc.tests = \
tools/javadoc/
#
doclets.includes = \
com/sun/tools/doclets/
doclets.tests = \
com/sun/javadoc/
#
javah.includes = \
com/sun/tools/javah/
javah.tests = \
tools/javah/
#
javap.includes = \
com/sun/tools/classfile/ \
com/sun/tools/javap/ \
com/sun/tools/jdeps/ \
sun/tools/javap/
javap.tests = \
tools/javap/
#
sjavac.includes = \
com/sun/tools/sjavac/
sjavac.tests = \
tools/sjavac
#
# The following files require the latest JDK to be available.
# The API can be provided by using a suitable boot.java.home
# or by setting import.jdk
require.latest.jdk.files = \
com/sun/tools/javac/nio/*.java
# The following files in the import jdk source directory are required
# in order to compile the files defined in ${require.latest.jdk.files}
#
# For NIO, the list of stub files is defined by the contents of the primary
# API packages, together with such types that may be required in order to
# compile the stubs. Some of these dependencies would go away if the stub
# generator were to be improved -- e.g. by removing unnecessary imports.
#
import.jdk.stub.files = \
java/io/File.java \
java/nio/file/**.java \
java/nio/file/attribute/**.java \
java/nio/file/spi/**.java \
java/nio/channels/AsynchronousChannel.java \
java/nio/channels/AsynchronousFileChannel.java \
java/nio/channels/CompletionHandler.java \
java/nio/channels/SeekableByteChannel.java
# The following value is used by the main jtreg target.
# An empty value means all tests
# Override as desired to run a specific set of tests
jtreg.tests =
# Check style configuration
# overridable name and version
checkstyle.name.version = checkstyle-5.4