hg: valhalla/valhalla: 8205549: [lworld] Unsafe support for flattened field of value type

Tobias Hartmann tobias.hartmann at oracle.com
Tue Jul 3 14:46:39 UTC 2018


Thanks Mandy.

Best regards,
Tobias

On 03.07.2018 16:39, mandy chung wrote:
> I see the problem as this is not fully initialized value object.  I created
> https://bugs.openjdk.java.net/browse/JDK-8206274 to track it.
> 
> Mandy
> 
> On 7/3/18 12:31 AM, Tobias Hartmann wrote:
>> Hi Mandy,
>>
>> with this patch, I still get a NPE with the following test
>>
>> public class Test {
>>
>>      __ByValue final class MyValue1 {
>>          //__NotFlattened final int x = 42;
>>          final int x = 42;
>>      }
>>
>>      public void test() {
>>          MyValue1 vt = __MakeDefault MyValue1();
>>          System.out.println(vt.toString());
>>      }
>>
>>      public static void main(String[] args) {
>>          (new Test()).test();
>>      }
>> }
>>
>> Exception in thread "main" java.lang.NullPointerException
>>     at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
>>     at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
>>     at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>>     at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>>     at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
>>     at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>>     at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
>>     at java.base/java.lang.invoke.ValueBootstrapMethods.toString(ValueBootstrapMethods.java:236)
>>     at Test$MyValue1.toString(Test.java:4)
>>     at Test.test(Test.java:10)
>>     at Test.main(Test.java:14)
>>
>> I get this with both versions (flattened and non-flattened field x).
>>
>> Thanks,
>> Tobias
>>
>> On 02.07.2018 18:54, mandy.chung at oracle.com wrote:
>>> Changeset: 0dd8795826b3
>>> Author:    mchung
>>> Date:      2018-07-02 09:53 -0700
>>> URL:       http://hg.openjdk.java.net/valhalla/valhalla/rev/0dd8795826b3
>>>
>>> 8205549: [lworld] Unsafe support for flattened field of value type
>>> Reviewed-by: psandoz
>>>
>>> ! src/hotspot/share/prims/methodHandles.cpp
>>> ! src/hotspot/share/prims/unsafe.cpp
>>> ! src/hotspot/share/runtime/reflection.cpp
>>> ! src/hotspot/share/utilities/accessFlags.hpp
>>> ! src/java.base/share/classes/java/lang/invoke/DirectMethodHandle.java
>>> ! src/java.base/share/classes/java/lang/invoke/GenerateJLIClassesHelper.java
>>> ! src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java
>>> ! src/java.base/share/classes/java/lang/invoke/LambdaForm.java
>>> ! src/java.base/share/classes/java/lang/invoke/MemberName.java
>>> ! src/java.base/share/classes/java/lang/invoke/VarHandles.java
>>> ! src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template
>>> ! src/java.base/share/classes/java/lang/reflect/Modifier.java
>>> ! src/java.base/share/classes/java/lang/reflect/ReflectAccess.java
>>> ! src/java.base/share/classes/jdk/internal/misc/Unsafe.java
>>> ! src/java.base/share/classes/jdk/internal/reflect/LangReflectAccess.java
>>> ! src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java
>>> ! src/java.base/share/classes/jdk/internal/reflect/UnsafeFieldAccessorImpl.java
>>> ! src/java.base/share/classes/jdk/internal/reflect/UnsafeObjectFieldAccessorImpl.java
>>> ! src/java.base/share/classes/jdk/internal/reflect/UnsafeQualifiedObjectFieldAccessorImpl.java
>>> ! src/java.base/share/classes/jdk/internal/reflect/UnsafeQualifiedStaticObjectFieldAccessorImpl.java
>>> ! src/java.base/share/classes/jdk/internal/reflect/UnsafeStaticObjectFieldAccessorImpl.java
>>> ! test/jdk/valhalla/valuetypes/Line.java
>>> + test/jdk/valhalla/valuetypes/MethodHandleTest.java
>>> + test/jdk/valhalla/valuetypes/MutablePath.java
>>> ! test/jdk/valhalla/valuetypes/ObjectMethods.java
>>> ! test/jdk/valhalla/valuetypes/Point.java
>>> ! test/jdk/valhalla/valuetypes/Reflection.java
>>>


More information about the valhalla-dev mailing list