[9] RFR (M): 8050052: Small cleanups in java.lang.invoke code

Remi Forax forax at univ-mlv.fr
Fri Jul 11 18:53:23 UTC 2014


On 07/11/2014 08:16 PM, Paul Sandoz wrote:
> On Jul 11, 2014, at 7:56 PM, Remi Forax <forax at univ-mlv.fr> wrote:
>> On 07/11/2014 06:18 PM, Vladimir Ivanov wrote:
>>> http://cr.openjdk.java.net/~vlivanov/8050052/webrev.00
>>> https://bugs.openjdk.java.net/browse/JDK-8050052
>> I've found myself writing the very same code as MethodHandleStatics.uncaughException several times
>> and I wonder if it should not be an instance method of Throwable.
>> Something like:
>>
>> public <E extends Throwable> E rethrow(Function<? super Throwable, ? extends E> uncaughtHandler) {
>>   if (this instanceof RuntimeException) {
>> throw (RuntimeException)this;
>>   }
>>   if (this instanceof Error) {
>>     throw (Error)this;
>>   }
>>   return uncaughtHandler.apply(this);
>> }
>>
>> in that case, throw uncaughtException(ex) can be replaced by throw ex.rethrow(::newInternalError);
>>
> I suspect there could be a risk of some bootstrap/initialization issues using a method ref in such code.
>
> Paul.

yes, right, using invokedynamic in java.lang.invoke is not a good idea.

Rémi




More information about the core-libs-dev mailing list