Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float

2018-04-04 Thread bren

Hi David,

Many thanks for the comments.

In relation to the ARMV5 support, in the past Oracle released a version 
for Mindstorms:

http://www.oracle.com/technetwork/java/embedded/downloads/javase/javaseemeddedev3-1982511.html

but if you observe that release was Java 8.

For Java 9, we could build JDK and JRI (Java Runtime Images)
https://github.com/ev3dev-lang-java/openjdk-ev3/releases/tag/v0.4.5

I wish with your local path suggestion, we could build OpenJDK 10.
Later, we will try with OpenJDK11.

I have to see how to automate the whole process on Travis CI.

Cheers

Juan Antonio

El 2018-04-05 04:23, David Holmes escribió:

On 5/04/2018 11:26 AM, b...@juanantonio.info wrote:

Good night David,

It is the first time that I report a Bug on OpenJDK and I didn´t 
receive any notification so I didn´t know the status of the Issue that 
I reported.


Sorry about that. You should have received some form of notification.


Many thanks with the link about the Platforms supported:
http://www.oracle.com/technetwork/java/javase/documentation/jdk10certconfig-4417031.html 
We will try to do Compilation with the solution.


--- a/src/hotspot/cpu/arm/vm_version_arm_32.cpp
+++ b/src/hotspot/cpu/arm/vm_version_arm_32.cpp
@@ -298,6 +298,15 @@
  FLAG_SET_DEFAULT(UseUnalignedAccesses, false);
    }

+ if (arm_arch() == 5) {
+ if (FLAG_IS_DEFAULT(AssumeMP)) {
+ FLAG_SET_DEFAULT(AssumeMP, false);
+ else if (AssumeMP) {
+ warning("AssumeMP can not be true for ARMv5 as there is only 
uniprocessor support");

+ FLAG_SET_DEFAULT(AssumeMP, false);
+ }
+ }
+
    _is_initialized = true;
  }

Runtime workaround: java -XX:-AssumeMP

In our case, I would like to continue maintaining this support for the 
Device.

What is the advice that you could give us?


You would have to keep the local copy of your source code patched and
produce your own builds. But if you also try to update with the
mainline OpenJDK code then you will very soon hit problems. In fact
I'd be very surprised if this works today, even if it builds, as we
have not provided any updates to ARM32 in a long time. The only
supported way to run on ARM32 is using the Zero interpreter as Adrian
replied.


What is AssumeMP?


Assume Multi-Processor.

When running on a MP system the VM has to use and generate code that
provides the correct level of atomicity and memory consistency - none
of which is necessary on a uniprocessor system. MP systems are the
norm and in the rare case we issue the additional memory
synchronization instructions they should be no-ops on a uniprocessor,
so we are heading towards stripping out uniprocessor support and only
build in MP support so that we don't need dynamic checks through the
code to see if we are MP or not. Switching AssumeMP to true was the
first step in that process (and avoided problems where the VM may be
started with only one processor available but then had additional ones
added later.)

In any case there has never been any support for ARMv5 multiprocessors.

Cheers,
David

For education, this device is pretty interesting for the whole Java 
community, this is the reason.




I will inform with the results.

Many thanks in advance.

Cheers

Juan Antonio

El 2018-04-05 00:12, David Holmes escribió:

Hi,

This was already reported as:

https://bugs.openjdk.java.net/browse/JDK-8200580

to which I have responded and closed the bug as this is not a
supported platform.

As per the bug report this may be due to the change to AssumeMP to be
true, but there is no MP support for ARMv5.

David

On 4/04/2018 8:29 PM, b...@juanantonio.info wrote:

Good morning,

Mi name is Juan Antonio Breña Moral, I am developing a set of Java 
libraries for Lego Mindstorms EV3, an ARM5 robotics device and 
recently, we build OpenJDK 9 with success but with OpenJDK 10, we 
have found some problems when we execute some Java programs.


Repository to build OpenJDK 9/10 for ARM5 Soft Float:
https://github.com/ev3dev-lang-java/openjdk-ev3

To test the JVM, I am using the following repo to test the VM:
https://github.com/ev3dev-lang-java/vmbenchmarks

And this is the output with the error:

robot@ev3dev:~$ java -jar benchmarks.jar -f 1
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils 
(file:/home/robot/benchmarks.jar) to field java.io.Console.cs
WARNING: Please consider reporting this to the maintainers of 
org.openjdk.jmh.util.Utils
WARNING: Use --illegal-access=warn to enable warnings of further 
illegal reflective access operations
WARNING: All illegal access operations will be denied in a future 
release
=== DEBUG MESSAGE: Atomic load(jlong) unsupported on 
this platform 


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on 
this platform 



=== DEBUG MESSAGE: Atomic load(jlong) unsupported on 
this platform 


[thread 4430 also had an error]
[error occurred during error reporting ((null)), id 

Re: Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float

2018-04-04 Thread bren

Good night David,

It is the first time that I report a Bug on OpenJDK and I didn´t receive 
any notification so I didn´t know the status of the Issue that I 
reported.


Many thanks with the link about the Platforms supported:
http://www.oracle.com/technetwork/java/javase/documentation/jdk10certconfig-4417031.html

We will try to do Compilation with the solution.

--- a/src/hotspot/cpu/arm/vm_version_arm_32.cpp
+++ b/src/hotspot/cpu/arm/vm_version_arm_32.cpp
@@ -298,6 +298,15 @@
 FLAG_SET_DEFAULT(UseUnalignedAccesses, false);
   }

+ if (arm_arch() == 5) {
+ if (FLAG_IS_DEFAULT(AssumeMP)) {
+ FLAG_SET_DEFAULT(AssumeMP, false);
+ else if (AssumeMP) {
+ warning("AssumeMP can not be true for ARMv5 as there is only 
uniprocessor support");

+ FLAG_SET_DEFAULT(AssumeMP, false);
+ }
+ }
+
   _is_initialized = true;
 }

Runtime workaround: java -XX:-AssumeMP

In our case, I would like to continue maintaining this support for the 
Device.

What is the advice that you could give us?
What is AssumeMP?

For education, this device is pretty interesting for the whole Java 
community, this is the reason.


I will inform with the results.

Many thanks in advance.

Cheers

Juan Antonio

El 2018-04-05 00:12, David Holmes escribió:

Hi,

This was already reported as:

https://bugs.openjdk.java.net/browse/JDK-8200580

to which I have responded and closed the bug as this is not a
supported platform.

As per the bug report this may be due to the change to AssumeMP to be
true, but there is no MP support for ARMv5.

David

On 4/04/2018 8:29 PM, b...@juanantonio.info wrote:

Good morning,

Mi name is Juan Antonio Breña Moral, I am developing a set of Java 
libraries for Lego Mindstorms EV3, an ARM5 robotics device and 
recently, we build OpenJDK 9 with success but with OpenJDK 10, we have 
found some problems when we execute some Java programs.


Repository to build OpenJDK 9/10 for ARM5 Soft Float:
https://github.com/ev3dev-lang-java/openjdk-ev3

To test the JVM, I am using the following repo to test the VM:
https://github.com/ev3dev-lang-java/vmbenchmarks

And this is the output with the error:

robot@ev3dev:~$ java -jar benchmarks.jar -f 1
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils 
(file:/home/robot/benchmarks.jar) to field java.io.Console.cs
WARNING: Please consider reporting this to the maintainers of 
org.openjdk.jmh.util.Utils
WARNING: Use --illegal-access=warn to enable warnings of further 
illegal reflective access operations
WARNING: All illegal access operations will be denied in a future 
release
=== DEBUG MESSAGE: Atomic load(jlong) unsupported on this 
platform 


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



=== DEBUG MESSAGE: Atomic load(jlong) unsupported on this 
platform 


[thread 4430 also had an error]
[error occurred during error reporting ((null)), id 0xe000]

=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing fatal error message), 
id 0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing type of error), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing stack bounds), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing native stack), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing Java stack), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing target Java thread 
stack), id 0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing siginfo), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (CDS archive access warning), 
id 0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing register info), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[Too many errors, abort]
Aborted

I think that in OpenJDK10 changed something in compare to OpenJDK9 in 
relation to ARM5 support.


Any idea?

Many thanks in advance.

Cheers

Juan Antonio



Execution problems with Atomic Operations on OpenJDK10 for ARM5 Soft Float

2018-04-04 Thread bren

Good morning,

Mi name is Juan Antonio Breña Moral, I am developing a set of Java 
libraries for Lego Mindstorms EV3, an ARM5 robotics device and recently, 
we build OpenJDK 9 with success but with OpenJDK 10, we have found some 
problems when we execute some Java programs.


Repository to build OpenJDK 9/10 for ARM5 Soft Float:
https://github.com/ev3dev-lang-java/openjdk-ev3

To test the JVM, I am using the following repo to test the VM:
https://github.com/ev3dev-lang-java/vmbenchmarks

And this is the output with the error:

robot@ev3dev:~$ java -jar benchmarks.jar -f 1
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.openjdk.jmh.util.Utils 
(file:/home/robot/benchmarks.jar) to field java.io.Console.cs
WARNING: Please consider reporting this to the maintainers of 
org.openjdk.jmh.util.Utils
WARNING: Use --illegal-access=warn to enable warnings of further illegal 
reflective access operations
WARNING: All illegal access operations will be denied in a future 
release
=== DEBUG MESSAGE: Atomic load(jlong) unsupported on this 
platform 


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



=== DEBUG MESSAGE: Atomic load(jlong) unsupported on this 
platform 


[thread 4430 also had an error]
[error occurred during error reporting ((null)), id 0xe000]

=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing fatal error message), 
id 0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing type of error), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing stack bounds), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing native stack), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing Java stack), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing target Java thread 
stack), id 0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing siginfo), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (CDS archive access warning), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[error occurred during error reporting (printing register info), id 
0xe000]


=== DEBUG MESSAGE: Atomic store(jlong) unsupported on this 
platform 



[Too many errors, abort]
Aborted

I think that in OpenJDK10 changed something in compare to OpenJDK9 in 
relation to ARM5 support.


Any idea?

Many thanks in advance.

Cheers

Juan Antonio