History log of /libcore/ojluni/src/main/java/java/lang/invoke/MethodHandle.java
Revision Date Author Comments
f4ee5c6dccff8f7e037f95b26767e552ea93d41b 31-Jan-2017 Narayan Kamath <narayan@google.com> MethodHandles: Expose hidden APIs that were recently implemented.

Also addresses a handful of TODOs about changing @code to @link.

Test: make checkapi docs
Change-Id: I5472b2b1deeb2cd49b3abf9c113e46f6bd8f221f
0e8de7372de378e00c429dbf9d55526d433a7a21 24-Jan-2017 Narayan Kamath <narayan@google.com> MethodHandle: Implement MethodHandle.asCollector.

Test: make test-art-host
Change-Id: I73377c9b46d498bd932f7d6e6459c160b8e85217
86dc78f165d24514cb094db95e8bad99618626e9 20-Jan-2017 Narayan Kamath <narayan@google.com> MethodHandle: Implement invokeWithArguments.

This is nothing but a spreader with no leading arguments.

Test: make test-art-host

Change-Id: Idee6e9c745c826619047d71355bbf3118d33f5ab
378d458718d98d264b58734c87568ee5de9a6781 17-Jan-2017 Narayan Kamath <narayan@google.com> MethodHandles: Implement spreader methods.

Implements MethodHandle.asSpreader and MethodHandles.spreadInvoker.
This is the reverse of var-args collection, and the Transformer
implementation is symmetric with VarargsCollector (modulo inconsitencies
in the API).

Test: make test-art-host

Change-Id: If4deaa52f14143115b573bb0616e2eb72e83f859
cce1c9e194b4082f00fd6aac2ef9beec75ff5500 17-Jan-2017 Narayan Kamath <narayan@google.com> MethodHandles: Unhide java.lang.invoke.*

A handful of methods are not implemented yet, and remain hidden.
Javadoc @links that reference these hidden methods have temporarily
been converted to @code.

The only notable Android specific change is the changing of link
targets from a method in the MethodHandles class to another method in
the same class to remove the explicit class reference (e.g.
{@link MethodHandles#lookup} -> {@link #lookup}). This is to work around
javadoc errors caused by these links

Test: make docs
Change-Id: Ie7a49b76de59ea957e117cb695a28cb1137dae4e
704b13a41cc7efd49acf66064109756a248fe0dc 25-Nov-2016 Orion Hodson <oth@google.com> Revert "Revert "Method Handles: Add VarargsCollector.""

Fixes component type of reference arrays which caused test failures
in the interpreter when assignability checks were enabled.

This reverts commit df3b54d0cd43fbde26a0a8d984b7a0b2e2a92f2e.

Bug: 30550796
Test: ART_TEST_INTERPRETER_ACCESS_CHECKS=true m test-art-host-run-test-956-methodhandles

Change-Id: I78a819cde9e07a385825772869852ea737de657d
df3b54d0cd43fbde26a0a8d984b7a0b2e2a92f2e 25-Nov-2016 Orion Hodson <oth@google.com> Revert "Method Handles: Add VarargsCollector."

This reverts commit 14e84c863b3ca946293c99afc9dc112e52fca4ca.

Change-Id: I57858cc6df5aafe31baf0ad05c70ac1d440329a1
14e84c863b3ca946293c99afc9dc112e52fca4ca 14-Nov-2016 Orion Hodson <oth@google.com> Method Handles: Add VarargsCollector.

Enable support for methods with variable arity arguments.

Test: m test-art-host-run-test-956-methodhandles
Bug: 30550796

Change-Id: I22158c2180f308fff016cd3aebc4a1beac2a875a
6774aff0e542cbe31c02570916ff98c6337071df 08-Nov-2016 Narayan Kamath <narayan@google.com> MethodHandle: Reintroduce @link / @linkplain.

Addresses TODOs that were needed because MethodHandles wasn't
present in the code base.

Test: make docs
Bug: 30550796
Change-Id: I25c790b6d3e66a3f288b9989e062b292c86b3e6e
0ab46853af9f5c16c877e1677d8d27b8fdecc2cd 04-Nov-2016 Narayan Kamath <narayan@google.com> MethodHandles: Implement MethodHandle.bindTo.

Bug: 30550796
Test: make test-art-host
Change-Id: Id71d57e8786ebe2453da6a7c7df44bbd19a3a939
ff28f8512f99a9507f12b9eb600a374414735394 02-Nov-2016 Narayan Kamath <narayan@google.com> MethodHandles: Implement MethodHandle.asType.

MethodHandles that are derived from asType calls declare a "nominal"
type in addition to their "actual" type, the latter being the type of
the target method being invoked in the case of non-transforming method
handles.

The runtime will need to check the callsite type against the "nominal"
type in order to check for exactness in the sense of throwing a WMTE
when there's no exact match, but will have to use the "actual" type in
order to build stack frames or perform argument conversions.

One minor drawback this change introduces is that it forces all method
handle subclasses to be cloneable in order to be used with asType. This
shouldn't be an issue in practice, given that we control this class
hierarchy.

Test: make test-art-host
Bug : 30550796

Change-Id: I350a48a8cf70e2789c1c1d121f97c301d0640e54
4542b1f73a106b12187cd81c59ae68da792a75cf 19-Oct-2016 Orion Hodson <oth@google.com> Getter/Setter support for invoke-polymorphic of invokeExact().

Test: make test-art-host
Bug: 30550796

Change-Id: I21381c6b108226e050fc42d695326e2f52c4a2f7
faf8883397aed1411590edd1bf5b6681430a10f5 18-Oct-2016 Narayan Kamath <narayan@google.com> MethodHandles: Add support for method handle transforms [part 1]

Defines a new invoke type (INVOKE_TRANSFORM) and support for invoking
the transformer method. Full details provided in the companion ART
change (commit 3f1e50841b70507a2619c031fa0b0b4791ffa386).

bug: 30550796
Test: make test-art-host

Change-Id: I643e8a818ec2e66f604477be9384aaf7a2671f9d
5bf2e16e7e789d8668c83851a1486e7bb1a286ff 04-Oct-2016 Narayan Kamath <narayan@google.com> MethodHandle: Change values of "kind" constants.

Easier to error-check on the ART side if the values are contiguous
and start with 0.

bug: 30550796
Test: make
Change-Id: Id622467be55a8059c37660017859297f6f4693ba
54168f0e8137b9d2addc6e7bf723aaf1ee3fd744 22-Sep-2016 Narayan Kamath <narayan@google.com> Add basic implementation of Lookup.find{Virtual,Static,Constructor}.

- Implemented using existing reflection APIs.
- Access checking is performed in Java and not by the runtime.

bug: 30550796
Test: make checkbuild
Test: art/tools/run-libcore-tests.sh --mode=host --variant=X64
Change-Id: I3f65d96851272592c7ba0898ea9e34889adca48b
ed438115cf887c4541cb292244b8234c0aa19b1c 15-Aug-2016 Narayan Kamath <narayan@google.com> java.lang.invoke: Add a concrete subclass of MethodHandle.

For plain vanilla method handles that refer to an art field or a method
and do not specify any transformations.

bug: 30550796

Change-Id: Ia902fbd95cd3ef03f6f04d784bd50b7045c2f808
8b532c93d91102f2f3edf9a6b69e2ce9d2a3a8e6 27-Jul-2016 Narayan Kamath <narayan@google.com> java.lang.invoke: Add MethodHandle.

- Addresses TODOs in MethodType that depended on the inclusion
of java.lang.invoke.MethodHandle.

- None of the functionality in this change is functional or testable
currently. We need this because there are a few circular dependencies
between the runtime implementation of polymorphic invokes and this
class.

- This change also adds dummy native implementations of invoke /
invokeExact. These methods must be marked as native and must throw
an UnsupportedOperation when invoked reflectively.

bug: 30550796
test: make docs

Change-Id: Ic9c3faa4be4fd3b443b9dab8f7c4f5e8f8c1187a
cc42201b8d47d4c03a69dcf6df4e58c1a11d32e5 21-Dec-2015 Paul Duffin <paulduffin@google.com> Deleting unused or broken files

The tests removed from luni/src/test are testing files that no
longer exist. It's possible that they provided some coverage of
the code which is not provided for the OpenJDK code.

The classes removed from ojluni/src/main are the ones not
explicitly mentioned in the openjdk_java_files.mk.

Change-Id: Id52d65d9b1f06e1a6e7afbd93336c7d12e0c3083
51b1b6997fd3f980076b8081f7f1165ccc2a4008 16-Feb-2015 Piotr Jastrzebski <haaawk@google.com> Initial import of OpenJdk files.

Create new libcore/ojluni directory with src/main/java and
src/main/native subdirectiories.

Build ojluni into core-oj jar.

Use openjdk classes from java.awt.font package.

Copy all files from jdk/src/share/classes and jdk/src/solaris/classes
directories in openjdk into libcore/ojluni/src/main/java.

Copy following native files from openjdk to
libcore/ojluni/src/main/native:
jdk/src/solaris/native/java/io/canonicalize_md.c
build/linux-amd64/include/classfile_constants.h
jdk/src/share/native/java/net/DatagramPacket.c
jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c
jdk/src/share/native/java/lang/Double.c
jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h
jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c
jdk/src/solaris/native/java/io/FileDescriptor_md.c
jdk/src/solaris/native/sun/nio/ch/FileDispatcherImpl.c
jdk/src/share/native/java/io/FileInputStream.c
jdk/src/solaris/native/sun/nio/ch/FileKey.c
jdk/src/solaris/native/java/io/FileOutputStream_md.c
jdk/src/solaris/native/java/io/FileSystem_md.c
jdk/src/share/native/java/lang/Float.c
jdk/src/share/native/java/net/Inet4Address.c
jdk/src/solaris/native/java/net/Inet4AddressImpl.c
jdk/src/share/native/java/net/Inet6Address.c
jdk/src/solaris/native/java/net/Inet6AddressImpl.c
jdk/src/share/native/java/net/InetAddress.c
jdk/src/solaris/native/java/net/InetAddressImplFactory.c
jdk/src/share/native/java/io/io_util.c
jdk/src/solaris/native/sun/nio/ch/IOUtil.c
jdk/src/share/native/java/io/io_util.h
jdk/src/solaris/native/java/io/io_util_md.c
jdk/src/solaris/native/java/io/io_util_md.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/java_io_FileDescriptor.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileInputStream.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileOutputStream.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_FileSystem.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_ObjectStreamClass.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_io_UnixFileSystem.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Double.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Float.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Integer.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Long.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Runtime.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Shutdown.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_StrictMath.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_String.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_System.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Thread.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/java_lang_Throwable.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_DatagramPacket.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet4Address.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet4AddressImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet6Address.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_Inet6AddressImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_InetAddress.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_InetAddressImplFactory.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_NetworkInterface.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_PlainDatagramSocketImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_PlainSocketImpl.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketInputStream.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketOptions.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/java_net_SocketOutputStream.h
jdk/src/share/native/java/lang/java_props.h
jdk/src/solaris/native/java/lang/java_props_md.c
jdk/src/share/native/java/util/zip/Adler32.c as java_util_zip_Adler32.c
jdk/src/share/native/java/util/zip/CRC32.c as java_util_zip_CRC32.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_CRC32.h
jdk/src/share/native/java/util/zip/Deflater.c as java_util_zip_Deflater.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_Deflater.h
jdk/src/share/native/java/util/zip/Inflater.c as java_util_zip_Inflater.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_Inflater.h
jdk/src/share/native/java/util/zip/ZipFile.c as java_util_zip_ZipFile.c
build/linux-amd64/tmp/sun/java.util.zip/zip/CClassHeaders/java_util_zip_ZipFile.h
jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h
jdk/src/share/native/common/jlong.h
jdk/src/solaris/native/common/jlong_md.h
jdk/src/share/native/common/jni_util.c
jdk/src/share/native/common/jni_util.h
jdk/src/solaris/native/common/jni_util_md.c
jdk/src/share/javavm/export/jvm.h
jdk/src/solaris/javavm/export/jvm_md.h
jdk/src/solaris/native/java/net/linux_close.c
jdk/src/share/native/sun/misc/NativeSignalHandler.c
jdk/src/solaris/native/sun/nio/ch/NativeThread.c
jdk/src/share/native/java/net/net_util.c
jdk/src/share/native/java/net/net_util.h
jdk/src/solaris/native/java/net/net_util_md.c
jdk/src/solaris/native/java/net/net_util_md.h
jdk/src/solaris/native/java/net/NetworkInterface.c
jdk/src/share/native/sun/nio/ch/nio.h
jdk/src/solaris/native/sun/nio/ch/nio_util.h
jdk/src/share/native/java/io/ObjectStreamClass.c
jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
jdk/src/solaris/native/java/net/PlainSocketImpl.c
jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c
jdk/src/share/native/java/lang/Runtime.c
jdk/src/share/native/java/lang/Shutdown.c
jdk/src/share/native/sun/misc/Signal.c
jdk/src/solaris/native/java/net/SocketInputStream.c
jdk/src/solaris/native/java/net/SocketOutputStream.c
jdk/src/share/native/java/lang/StrictMath.c
jdk/src/share/native/java/lang/String.c
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/sun_misc_NativeSignalHandler.h
build/linux-amd64/tmp/java/java.lang/java/CClassHeaders/sun_misc_Signal.h
build/linux-amd64/tmp/sun/java.net/net/CClassHeaders/sun_net_spi_DefaultProxySelector.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileChannelImpl.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileDispatcherImpl.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_FileKey.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_IOStatus.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_IOUtil.h
build/linux-amd64/tmp/java/java.nio/nio/CClassHeaders/sun_nio_ch_NativeThread.h
jdk/src/share/native/java/lang/System.c
jdk/src/share/native/java/lang/Thread.c
jdk/src/share/native/java/lang/Throwable.c
jdk/src/solaris/native/java/io/UnixFileSystem_md.c
jdk/src/solaris/native/java/lang/UNIXProcess_md.c
jdk/src/share/native/java/util/zip/zip_util.c
jdk/src/share/native/java/util/zip/zip_util.h

Change-Id: Ib237df4e1b7b5b4d9f12e74d189e6ec9eed3c31d