CFV: New JDK9 Reviewer: Robert Field
Jim Laskey (Oracle)
james.laskey at oracle.com
Fri Dec 4 14:08:27 UTC 2015
Vote: Yes
> On Dec 3, 2015, at 4:06 PM, Jan Lahoda <jan.lahoda at oracle.com> wrote:
>
> I hereby nominate Robert Field to JDK 9 Reviewer.
>
> Robert is the lead engineer on JShell for JDK 9, previously he developed the compiler and runtime for lambda, he was the lead engineer / architect for JDI, JDWP, JVMTI, JVMDI, and javadoc doclets. Robert authored and contributed at least 30 changesets to the langtools repository and 18 to the jdk repository (listed below).
>
> Votes are due by 17 Dec 2015.
>
> Only current JDK 9 Reviewers [1] are eligible to vote
> on this nomination. Votes must be cast in the open by replying
> to this mailing list.
>
> For Three-Vote Consensus voting instructions, see [2].
>
> Jan
>
> [1] http://openjdk.java.net/census#jdk9
> [2] http://openjdk.java.net/projects/#reviewer-vote
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/b88766917972c1132ff8a6f909144eb194ed5a09
> 8035776: Consistent Lambda construction
> Reviewed-by: ahgross, briangoetz, dlsmith
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/379bf638c4487a680175d7782d5d760dab51418f
> 8032711: Issue with Lambda in handling
> 8032704: Issues with lib perm in Lambda
> Reviewed-by: jrose, ahgross, briangoetz
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/d9d3705a992f0db39d0f3560fe620c29ccb4fea1
> 8025868: Several lang/LMBD JCK tests fail with java.lang.BootstrapMethodError
> Summary: Wildcard marker interfaces can cause duplicate implemented interfaces in generated lambda class
> Reviewed-by: briangoetz
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/88acc99132e2562569bfca99105dbb47b7e0fdf4
> 8027176: Remove redundant jdk/lambda/vm/DefaultMethodsTest.java
> Reviewed-by: ksrini
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/71ecbde5e5e47bc5e98679737d320475fe11f8c0
> 8025631: Enhance Lambda construction
> Reviewed-by: ksrini, ahgross
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/7736abdf080586f4aa47d930833f86fe542b49d2
> 8021186: jdk/lambda/vm/DefaultMethodsTest.java fails
> Summary: remove DefaultMethodsTest from jdk/test/problemList.txt
> Reviewed-by: mduigou
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/1b3616c4a836a71dd12bc46d91e86ab9f5599bd3
> 8020849: jdk/lambda/vm/DefaultMethodsTest.java
> Summary: Bridge generation has been removed from the VM. Fix is to remove tests that no longer make sense.
> Reviewed-by: ksrini
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/8d8b809dd29426b28d1a7a28bfd671d81a9bb47a
> 8010433: Remove lambda metafactory work-around to JDK-8005119
> Summary: Restore invokespecial to lambda metafactory
> Reviewed-by: ksrini
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/bd6fcc5eebb8b656581d65e8c3c534e73b14b218
> 8020816: Metafactory crashes on code with method reference
> 8021050: MethodHandleInfo throws exception when method handle is to a method with @CallerSensitive
> Summary: Fixed by 8008688 - this is a test to confirm the above fixed
> Reviewed-by: vlivanov
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/71059bca036a16bb4dc1774a737250c0fdf2ecf0
> 8016761: Lambda metafactory - incorrect type conversion of constructor method handle
> Reviewed-by: jrose
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/989049977d049c7c9c3cea56a3f753e3ce386d39
> 8015402: Lambda metafactory should not attempt to determine bridge methods
> Summary: paired with 8013789: Compiler should emit bridges in interfaces
> Reviewed-by: twisti
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/06dfdfa8c3e66c145bdbe7af33c8575ca67a7c13
> 8012028: Metafactory-generated lambda classes should be final
> 8008941: isSynthetic() returns false for lambda instances
> Reviewed-by: mduigou
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/e2cd40d7567c2cf42755bac9db92b79fb42cd1df
> 8011805: Update sun.tools.java class file reading/writing support to include the new constant pool entries
> Reviewed-by: mduigou, alanb
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/5ebc6242171744b3b7352ab4113b7842477f19f3
> 8008770: SerializedLambda incorrect class loader for lambda deserializing class
> Summary: current thread's context ClassLoader was used to load class by name, pass class not name in serialization (Thank you Peter Levart for test and prototype. Thank you Sundar and Peter for unofficial reviews)
> Reviewed-by: forax
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/1da987f0311aa461f555d9e13af2e93a0121d5c5
> 8008356: Test LambdaSerialization.java failing
> Summary: run in /othervm mode
> Reviewed-by: ksrini
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/7748ffdca16abe2c484829ab094284f76c1223fe
> 8004970: Implement serialization in the lambda metafactory
> Reviewed-by: forax
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/896d4af2ebfd39624b8ccfff0e0f4c342d4b3dd1
> 8003881: Prevent lambda implementing inner classes from allowing the creation of new instances
> Summary: Lambda implementing inner classes now has private constructor (thanks Kumar)
> Reviewed-by: ksrini
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/6302932b7380a4197f74b1af26c676d27d22a5af
> 8000806: Implement runtime lambda metafactory
> Summary: Implement lambda invokedynamic bootstrap by generating at runtime an inner class that implements the functional interface
> Reviewed-by: twisti
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/52227644abfa4692e5183722bfe7396be6fe7ab9
> 8068488: Facilitate extension of the javac parser -- missing modifier
> Reviewed-by: jjg
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/47926c2903556faa4d73afda9208e426c389a41f
> 8067384: Facilitate extension of the javac parser
> Reviewed-by: jjg
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/3c5de506a1f27f76e1d2f414056899e1a679cc93
> 8058112: Invalid BootstrapMethod for constructor/method reference
> Summary: Bridge method references with functional interface method parameters of intersection type
> Reviewed-by: vromero, dlsmith
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/7193d3fefda64af7a2dc935943ecfc467e4002aa
> 8056051: int[]::clone causes "java.lang.NoClassDefFoundError: Array"
> Reviewed-by: mcimadamore, vromero
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/2b6b96ed3878e062fb3829a2254fa991bb0a5237
> 8048121: javac complex method references: revamp and simplify
> 8038776: VerifyError when running successfully compiled java class
> Summary: Add tests missing from the push of 8037404
> Reviewed-by: dlsmith, vromero
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/97731dc59ef620e2c2deacc56991b2e11005d147
> 8037404: javac NPE or VerifyError for code with constructor reference of inner class
> 8047341: lambda reference to inner class in base class causes LambdaConversionException
> 8044748: JVM cannot access constructor though ::new reference although can call it directly
> 8044737: Lambda: NPE while obtaining method reference through lambda expression
> Summary: revamp and simplify handling of complex method references
> Reviewed-by: dlsmith, vromero
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/173f27d6e81f813d08d3bf9a3d26dd5651d13c97
> 8046060: Different results of floating point multiplication for lambda code block
> Summary: propogate strictfp into lambda body
> Reviewed-by: vromero, jlahoda
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/689266bbcd6af2cc9ffce46cfd3d56ae7bfdd7c7
> 8029852: Bad code generated (VerifyError) when lambda instantiates enclosing local class and has captured variables
> 8029725: Lambda reference to containing local class causes javac infinite recursion
> Reviewed-by: vromero, jlahoda, dlsmith
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/c2200da8ec5bd4bfabc80be1b753645c76edd5ee
> 8036942: javac generates incorrect exception table for multi-catch statements inside a lambda
> Summary: Union type info lost and also union type is not processed by TreeMaker.Type -- address by using existing tree, thus by-passing such issues.
> Reviewed-by: vromero, jlahoda
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/337cf1c6361876b3ca9922e16179f38ee720ab20
> 8038420: Lambda returning post-increment generates wrong code
> Reviewed-by: vromero, jlahoda
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/4a1443738f7cc341e881483e5ad7d3d725ad08db
> 8037935: Javac -- final local String var referenced in binary/unary op in lambda produces code that does not verify
> Summary: Remove over-zealous Attr optimization breaking lambdas
> Reviewed-by: jjg, vromero
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/6503222744ea8ac044cb876aa89f62eb024f9b89
> 8030626: java.lang.VerifyError: Bad return type when lambda's body is in parentheses
> Summary: properly type convert the body of a lambda expression (forward port to JDK9 of 8029558)
> Reviewed-by: vromero
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/4fa835472e3c49cc93b3532f5c9e80e22f1384a1
> 8028739: javac generates incorrect descriptor for MethodHandle::invoke
> Summary: introduce special handling for signature polymorphic methods
> Reviewed-by: jjg
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/860f1d21763a409c517b63e8a391cc75a47f54ba
> 8027220: DefaultMethodsTest: Change test to match spec
> Reviewed-by: ksrini
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/32ea6ccb7607740bc77e88aeb4b6c0959cc793aa
> 8022720: Method refeerences - private method should be accessible (nested classes)
> Reviewed-by: jjg, ksrini
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/6cd16d8ed2b987d6c79781e8dff0f37d0d841300
> 8023668: Desugar serializable lambda bodies using more robust naming scheme
> Summary: lambda / bridged method-reference naming overhaul
> Reviewed-by: ksrini, briangoetz
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/1ce8405af5fe99936ec3dbf52d1bacad0fdf300e
> 8012557: Implement lambda methods on interfaces as private
> 8016320: Method reference in subinterface of type I.super::foo produces exception at runtime
> Summary: Now that the VM supports interface instance private methods, lambda methods and lambda bridges are always private. Access is now through invokespecial.
> Reviewed-by: vromero, jlahoda
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/dee28dd47e1258b98a6ec76284df5d7736ac7373
> 8025548: langtools test tools/javac/lambda/methodReference/BridgeMethod.java incorrectly assumes no other methods generated in lambda class
> Reviewed-by: vromero
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/31ef33db5e0eef5c1f6c892b036e5b0ec4872b7c
> 8010006: NPE in javac with interface super in lambda
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/c09b7234cdedc24618ae864ebba62c5f74c1ae0b
> 8012556: Implement lambda methods on interfaces as static
> 8006140: Javac NPE compiling Lambda expression on initialization expression of static field in interface
> Summary: Lambdas occurring in static contexts or those not needing instance information should be generated into static methods. This has long been the case for classes. However, as a work-around to the lack of support for statics on interfaces, interface lambda methods have been generated into default methods. For lambdas in interface static contexts (fields and static methods) this causes an NPE in javac because there is no 'this'. MethodHandles now support static methods on interfaces. This changeset allows lambda methods to be generated as static interface methods. An existing bug in Hotspot (8013875) is exposed in a test when the "-esa" flag is used. This test and another test that already exposed this bug have been marked with @ignore.
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/68142e69cafbf189388b082af9a0d1156f06bc07
> 8014023: When a method reference to a local class constructor is contained in a method whose number of parameters matches the number of constructor parameters compilation fails
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/8e27e84de2e92d8d4b108499fecc3a5a3082622e
> 8011591: BootstrapMethodError when capturing constructor ref to local classes
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/fbbf5376e7e4c3faee37b0f6acf72d55e3afb4b9
> 8010010: NPE generating serializedLambdaName for nested lambda
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/d0ae21e3a382633ac86324fd0c15136fc325b685
> 8009742: Bad lambda name for lambda in a static initializer or ctor
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/a02c3ddc182b19a5c0bd868cc06b00a87f54e98a
> 8009582: Method reference generic constructor gives: IllegalArgumentException: Invalid lambda deserialization
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/cd7340a84bb8abc814193a4f38a26cd624f0a6f0
> 8008405: Now that metafactory is in place, add javac lambda serialization tests
> Summary: Tests part of original langtools serialization review.
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/f1f605f85850e2a980bf8dad2171ea414b171508
> 8004969: Generate $deserializeLambda$ method
> 8006763: super in method reference used in anonymous class - ClassFormatError is produced
> 8005632: Inner classes within lambdas cause build failures
> 8005653: Lambdas containing inner classes referencing external type variables do not correctly parameterize the inner classes
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/d898d9ee352f4a0eae6b67bd1996c9bcef071d6e
> 8003639: convert lambda testng tests to jtreg and add them
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/e6b1abdc11ca9e89ae8c4276fe01b543fb9b26da
> 8003306: Compiler crash: calculation of inner class access modifier
> Summary: Fix binary sense lost in transition to hasTag
> Reviewed-by: mcimadamore
>
> http://hg.openjdk.java.net/jdk9/dev/langtools/rev/a65971893c50c58701ee0aa3674a65050278a315
> 8000694: Add generation of lambda implementation code: invokedynamic call, lambda method, adaptor methods
> Summary: Add lambda implementation code with calling/supporting code elsewhere in the compiler
> Reviewed-by: mcimadamore, jjg
More information about the jdk9-dev
mailing list