harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Ellison <t.p.elli...@gmail.com>
Subject Re: [jchevm] Harmony Class Lib does "Hello World" on a GNU Classpath JVM
Date Fri, 10 Mar 2006 15:03:23 GMT
Weldon Washburn wrote:
> On 3/9/06, Archie Cobbs <archie@dellroad.org> wrote:
>> Weldon Washburn wrote:
>>> I can now run the below multithread Hello.java on JCHEVM using Apache
>>> Harmony Class Library.  The output toggles between clumps of "Hello
>>> World" and clumps of "*" as WindowsXP schedules the two application
>>> threads.  This is behavior I would expect. I use System.out.write()
>>> because System.out.println() does not work yet.   A summary follows:
>> Wow! Impressive achievment & very cool.

Yes, very cool -- good work Weldon.

>>> Mods to JCHEVM to get it to work
>>> 1)
>>> I was not able to find the _JC_LIB_ENTRY that is intended for
>>> read/writing files.  I gave up and "borrowed"
>>> JCNI_java_lang_VMThread_nativeSetPriority().  Instead of actually
>>> changing thread priority, it now does a "fprintf(stdout, "%s",
>>> &priority); fflush(stdout);"  Perhaps you can tell me what native
>>> method I should be using.
>> Classpath supplies its own native methods for file I/O. That is,
>> you can implement file I/O normally using normal native methods.
>> This is not something the VM needs to be directly involved with.
>> So the "fix" would be for classlib to implement this itself.
> 
> I suspected this.  But I could not figure out how to add a new entry
> into _JC_LIB_ENTRY.  I tried but got a bunch of misc error messages so
> I gave up.  If you give me some hints on how to add enties to
> _JC_LIB_ENTRY, I will take a second stab at it.
> 
>> There's no reason you couldn't write a gnu.classpath.Pointer
>> class if you wanted to. There's no copyright on the package
>> name :-)
> 
> I just now wrote an Apache Harmony version of java.lang.Pointer and
> java.lang.Pointer32.  It works fine.  I put it in the
> Harmony/modules/kernel/src/main/java/java/lang directory.  It can be
> move to another place and "re-packaged" once we figure out where it
> should go.

Take a look at the PlatformAddress type and see if that already does
what you want.

http://svn.apache.org/viewcvs.cgi/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/platform/struct/PlatformAddress.java?view=markup

>> By the way jchevm's Thread.setPriority() doesn't work because
>> I don't know how to implement it using POSIX.
>>
>>> 2)
>>> I commented out some stuff in bootstrap.c that was dragging in
>>> specific gnu classpath *.class files like "Lgnu/classpath/Pointer;"
>>> We should discuss the best solution for this item.
>> This is use as part of the NIO implementation for "direct" buffers.
>> A Pointer object simply contains an int or long that holds a void *.
>>
>>> One last item.  I don't know which SVN repository to place this work
>>> in.  Any suggestions?
>> You could create a branch of classlib in the "sandbox".
> 
> Tim Ellison, Geir Magnusson,
> I could create a ClassLib branch in the sandbox and call it
> "kernel_path".  It would only contain the generic files needed to glue
> a GNU ready JVM to Harmony Class Lib.  Thoughts?

AFAIK you only have read access across the whole repository, but you can
send it in via JIRA and somebody can drop it in for you.

Regards,
Tim

-- 

Tim Ellison (t.p.ellison@gmail.com)
IBM Java technology centre, UK.

Mime
View raw message