CFV: New JDK9 Reviewer: Robert Field

Jan Lahoda jan.lahoda at
Thu Dec 3 20:06:24 UTC 2015

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].


8035776: Consistent Lambda construction
Reviewed-by: ahgross, briangoetz, dlsmith
8032711: Issue with Lambda in handling
8032704: Issues with lib perm in Lambda
Reviewed-by: jrose, ahgross, briangoetz
8025868: Several lang/LMBD JCK tests fail with 
Summary: Wildcard marker interfaces can cause duplicate implemented 
interfaces in generated lambda class
Reviewed-by: briangoetz
8027176: Remove redundant jdk/lambda/vm/
Reviewed-by: ksrini
8025631: Enhance Lambda construction
Reviewed-by: ksrini, ahgross
8021186: jdk/lambda/vm/ fails
Summary: remove DefaultMethodsTest from jdk/test/problemList.txt
Reviewed-by: mduigou
8020849: jdk/lambda/vm/
Summary: Bridge generation has been removed from the VM. Fix is to 
remove tests that no longer make sense.
Reviewed-by: ksrini
8010433: Remove lambda metafactory work-around to JDK-8005119
Summary: Restore invokespecial to lambda metafactory
Reviewed-by: ksrini
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
8016761: Lambda metafactory - incorrect type conversion of constructor 
method handle
Reviewed-by: jrose
8015402: Lambda metafactory should not attempt to determine bridge methods
Summary: paired with 8013789: Compiler should emit bridges in interfaces
Reviewed-by: twisti
8012028: Metafactory-generated lambda classes should be final
8008941: isSynthetic() returns false for lambda instances
Reviewed-by: mduigou
8011805: Update class file reading/writing support to 
include the new constant pool entries
Reviewed-by: mduigou, alanb
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
8008356: Test failing
Summary: run in /othervm mode
Reviewed-by: ksrini
8004970: Implement serialization in the lambda metafactory
Reviewed-by: forax
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
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
8068488: Facilitate extension of the javac parser -- missing modifier
Reviewed-by: jjg
8067384: Facilitate extension of the javac parser
Reviewed-by: jjg
8058112: Invalid BootstrapMethod for constructor/method reference
Summary: Bridge method references with functional interface method 
parameters of intersection type
Reviewed-by: vromero, dlsmith
8056051: int[]::clone causes "java.lang.NoClassDefFoundError: Array"
Reviewed-by: mcimadamore, vromero
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
8037404: javac NPE or VerifyError for code with constructor reference of 
inner class
8047341: lambda reference to inner class in base class causes 
8044748: JVM cannot access constructor though ::new reference although 
can call it directly
8044737: Lambda: NPE while obtaining method reference through lambda 
Summary: revamp and simplify handling of complex method references
Reviewed-by: dlsmith, vromero
8046060: Different results of floating point multiplication for lambda 
code block
Summary: propogate strictfp into lambda body
Reviewed-by: vromero, jlahoda
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
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 
Reviewed-by: vromero, jlahoda
8038420: Lambda returning post-increment generates wrong code
Reviewed-by: vromero, jlahoda
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
8030626: java.lang.VerifyError: Bad return type when lambda's body is in 
Summary: properly type convert the body of a lambda expression (forward 
port to JDK9 of 8029558)
Reviewed-by: vromero
8028739: javac generates incorrect descriptor for MethodHandle::invoke
Summary: introduce special handling for signature polymorphic methods
Reviewed-by: jjg
8027220: DefaultMethodsTest: Change test to match spec
Reviewed-by: ksrini
8022720: Method refeerences - private method should be accessible 
(nested classes)
Reviewed-by: jjg, ksrini
8023668: Desugar serializable lambda bodies using more robust naming scheme
Summary: lambda / bridged method-reference naming overhaul
Reviewed-by: ksrini, briangoetz
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
8025548: langtools test 
tools/javac/lambda/methodReference/ incorrectly assumes 
no other methods generated in lambda class
Reviewed-by: vromero
8010006: NPE in javac with interface super in lambda
Reviewed-by: mcimadamore
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
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
8011591: BootstrapMethodError when capturing constructor ref to local 
Reviewed-by: mcimadamore
8010010: NPE generating serializedLambdaName for nested lambda
Reviewed-by: mcimadamore
8009742: Bad lambda name for lambda in a static initializer or ctor
Reviewed-by: mcimadamore
8009582: Method reference generic constructor gives: 
IllegalArgumentException: Invalid lambda deserialization
Reviewed-by: mcimadamore
8008405: Now that metafactory is in place, add javac lambda 
serialization tests
Summary: Tests part of original langtools serialization review.
Reviewed-by: mcimadamore
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
8003639: convert lambda testng tests to jtreg and add them
Reviewed-by: mcimadamore
8003306: Compiler crash: calculation of inner class access modifier
Summary: Fix binary sense lost in transition to hasTag
Reviewed-by: mcimadamore
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