Tim Ellison wrote:
On 24/Sep/2009 06:05, Regis wrote:
Tim Ellison wrote:
On 18/Sep/2009 08:58, Regis wrote:
I applied the improvements at r816508 and closed the JIRA.
Great. I assume it is just me, but I'm running with the IBM VME and see
a failure in the new test:
java -version
Apache Harmony Launcher : (c) Copyright 1991, 2009 The Apache Software
Foundation or its licensors, as applicable.
java version "1.4.2 subset"
Harmony Virtual Machine Element (2.3)
J9 (2.3)
IBM J9 2.3 Windows XP x86-32 (JIT enabled)
J9VM - 20060727_07300_lHdSMR
JIT - 20060727_1808_r8
GC - 20060724_AA
produces
(10038) An operation was attempted on something that is not a socket.
java.net.SocketException: (10038) An operation was attempted on
something that is not a socket.
at org.apache.harmony.luni.platform.OSNetworkSystem.writev(Native Method)
at
org.apache.harmony.nio.internal.SocketChannelImpl.writevImpl(SocketChannelImpl.java:554)
at
org.apache.harmony.nio.internal.SocketChannelImpl.write(SocketChannelImpl.java:530)
at
org.apache.harmony.nio.tests.java.nio.channels.SocketChannelTest.test_writev(SocketChannelTest.java:2673)
at java.lang.reflect.AccessibleObject.invokeV(AccessibleObject.java:25)
I'll try to recreate on DRLVM and open a JIRA if it is still failing
for me.
I have written a number of new tests for this code too, but they'll have
to wait until I get past this one :-)
Regards,
Tim
I found the failures only happened when buffers contained direct buffer,
after further investigation, (*env)->GetDirectBufferAddress always
return 0 in IBM VME. Maybe IBM VME doesn't support this JNI call or
doesn't recognize Harmony direct buffer implementation?
Ah, I expect it is that the VME doesn't work with the Harmony NIO
implementation yet. Things were working ok with the DRLVM so I went
ahead and committed my enhanced tests. I'm happy to say they all worked
perfectly with your optimizations too, good work! :-)
Regards,
Tim
It's a little sad it will break VME. I thought two ways to fix this:
1. add new parameter long[] to writev, which contains native address of direct
buffer, but the parameters will be a little long.
2. wrap native address to Long which can be filled in Object[], but this may
need reflections to get each value of Long.
Both of them are not so good....
--
Best Regards,
Regis.