Terminology etc

2005-05-24 Thread Steve Blackburn

I thought it might be helpful to clarify some terminology and a few
technical issues.  Corrections/improvements/clarifications welcome ;-)

VM core

 The precise composition of the VM core is open to discussion and
 debate.  However, I think a safe, broad definition of it is that
 part of the VM which brings together the major components such as
 JITs, classloaders, scheduler, and GC.  It's the hub in the wheel
 and is responsible for the main VM bootstrap (bootstrapping the
 classloader, starting the scheduler, memory manager, compiler etc).

VM bootstrap

 The bootstrap of the VM has a number of elements to it, including
 gathering command line arguments, and starting the various
 components (above).


In the context of a Java-in-Java VM, the above is all written in Java.


VM boot image

 The boot image is an image of a VM heap constructed ahead of time
 and populated with Java objects including code objects corresponding
 to the VM core and other elements of the VM necessary for the VM
 bootstrap (all written in Java, compiled ahead of time, packaged
 into Java objects and composed into a boot image).  The boot image
 construction phase requires a working host VM (ideally the VM is
 self-hosting).

VM bootloader

 In the case of Jikes RVM a dozen or so lines of assember and a few
 lines of C are required to basically do the job of any boot loader
 loader---mmap a boot image and throw the instruction pointer into
 it.  It will also marshal argv and make it available to the VM core.
 This is technically interesting, but actually pretty trivial and has
 little to do with the VM core (aside from ensuring the instruction
 pointer lands a nice place within the boot image ;-)

OS interface

 The VM must talk to the OS (for file IO, signal handling, etc).
 There is not a whole lot to it, but a Java wrapper around OS
 functionality is required if the VM is java-in-java.  This wrapper
 is pretty trivial and one half of it will (by necessity) be written
 in C.

I hope this brief sketch provides folks with a slightly clearer view
of what a java-in-java VM looks like, and some (tentitive) terminology
we can use to ensure we're not talking at cross purposes.

Cheers,

--Steve



Re: Terminology etc

2005-05-24 Thread Raffaele Castagno
2005/5/24, Steve Blackburn [EMAIL PROTECTED]:
 
 I thought it might be helpful to clarify some terminology and a few
 technical issues. Corrections/improvements/clarifications welcome ;-)
 

Scheduled for translation...

Raffaele


Re: [arch] The Third Way : C/C++ and Java and lets go forward

2005-05-24 Thread Dalibor Topic

Archie Cobbs wrote:

Nick Lothian wrote:


According to http://www.csc.uvic.ca/~csc586a/Ass1.pdf JamVm lacks a
bytecode verifier, too.



Seems like most O/S VM's don't have one (including JC)...


Gcj, leading the way, has two, or three by now :) Kaffe and CacaoJVM 
also have their own implementations, and JikesRVM as well, afaik.


The plan for Kaffe is to merge in the gcjx verifier, and try to 
standardise on a commonly maintained verifier component, to make sure we 
fix the security issues once, instead of fixing them everywhere:)


cheers,
dalibor topic


Re: Terminology etc

2005-05-24 Thread Dmitry Serebrennikov
This is excellent! For one, I find Java-in-Java to be much clearer after 
this little set of definitions.


A quick proposal: perhaps VM bootstrap as used below should really be 
something like VM initialization, VM init, or even VM startup, 
since the word bootstrap is very specific and to me at least, 
indicates something more akin to the VM bootloader + VM boot image 
(as used below).


I'm going to try to make a couple of observations. Please forgive the 
rambling :)  It just seems like things are starting to take shape...


* It looks like there is really not much in common between this 
architecture and one where VM core would be in C... For that one, VM 
core would be in C, as would be all of the components, such as GC, 
scheduler, etc. VM init doesn't sound like a big deal but would 
probably also be in C. VM boot image and the VM bootloader are 
simply not present in a C solution.


* OS interface is perhaps one place where some code can be shared. If 
C version can benefit from an OS abstraction layer for portability, then 
it seems like this layer could be shared between the C and the Java 
implementations.


* The meat of the VM seems to be in the spokes that connect to the VM 
core-hub. It seems that this is where it would make the most sense to 
mix components written in C with those written in Java, to see which one 
can do a better job. If all spokes were in C, it would make little sense 
to have the hub be in Java... On the other hand if spokes are all Java, 
it makes little sense to have the hub be in C.


Steve, if the spokes were in Java but the hub in C, would we then lose 
all of the aggressive inlining benefits that Java-in-Java solution can 
provide?



-dmitry

Steve Blackburn wrote:


I thought it might be helpful to clarify some terminology and a few
technical issues.  Corrections/improvements/clarifications welcome ;-)

VM core

 The precise composition of the VM core is open to discussion and
 debate.  However, I think a safe, broad definition of it is that
 part of the VM which brings together the major components such as
 JITs, classloaders, scheduler, and GC.  It's the hub in the wheel
 and is responsible for the main VM bootstrap (bootstrapping the
 classloader, starting the scheduler, memory manager, compiler etc).

VM bootstrap

 The bootstrap of the VM has a number of elements to it, including
 gathering command line arguments, and starting the various
 components (above).


In the context of a Java-in-Java VM, the above is all written in Java.


VM boot image

 The boot image is an image of a VM heap constructed ahead of time
 and populated with Java objects including code objects corresponding
 to the VM core and other elements of the VM necessary for the VM
 bootstrap (all written in Java, compiled ahead of time, packaged
 into Java objects and composed into a boot image).  The boot image
 construction phase requires a working host VM (ideally the VM is
 self-hosting).

VM bootloader

 In the case of Jikes RVM a dozen or so lines of assember and a few
 lines of C are required to basically do the job of any boot loader
 loader---mmap a boot image and throw the instruction pointer into
 it.  It will also marshal argv and make it available to the VM core.
 This is technically interesting, but actually pretty trivial and has
 little to do with the VM core (aside from ensuring the instruction
 pointer lands a nice place within the boot image ;-)

OS interface

 The VM must talk to the OS (for file IO, signal handling, etc).
 There is not a whole lot to it, but a Java wrapper around OS
 functionality is required if the VM is java-in-java.  This wrapper
 is pretty trivial and one half of it will (by necessity) be written
 in C.

I hope this brief sketch provides folks with a slightly clearer view
of what a java-in-java VM looks like, and some (tentitive) terminology
we can use to ensure we're not talking at cross purposes.

Cheers,

--Steve






Re: Terminology etc

2005-05-24 Thread Steve Blackburn

(BA$B!!(Bquestion (sorry)$B!'(B would it include realtime capabilities? 
(BCurrent
(Bsystems are sometimes real nightmares from this point of view and it is a
(Bmust have for embedded systems...
(B  
(B
(BI certainly hope so... I don't believe it is beyond us to achieve that.
(BThat is another area where the OVM experience may be particularly
(Bhelpful. As to the technical practicality of such a broad-ranging goal,
(Bthe j9 VM is as ambitious as this...
(B
(BCheers,
(B
(B--Steve

Re: Terminology etc

2005-05-24 Thread David Griffiths
Hi, on the subject of terminology, when you say scheduling, what do you 
mean exactly? Are you talking about monitors and other sync issues or are 
you talking about some kind of m:n thread scheduling? Or neither? :)

Cheers,

Dave

On 5/24/05, Steve Blackburn [EMAIL PROTECTED] wrote:
 
 Dmitry Serebrennikov wrote:
 
  A quick proposal: perhaps VM bootstrap as used below should really
  be something like VM initialization, VM init, or even VM
  startup, since the word bootstrap is very specific and to me at
  least, indicates something more akin to the VM bootloader + VM boot
  image (as used below).
 
 That sounds fine with me. It is hard to move outside one's own
 (limited) terminology :-). We have boot() methods on each of the key
 components and a boot() method in the vm core which calls these.
 That's the origins of my terminology. Init seems reasonable and
 disambiguates the role of the bootloader. Probably the original
 rationale for using the boot word is that there is a higher level of
 bootstrapping going on here---getting the classloader loaded before
 you have a class loader ;-) etc etc. But I agree, init may be helpful.
 
  * OS interface is perhaps one place where some code can be shared.
  If C version can benefit from an OS abstraction layer for portability,
  then it seems like this layer could be shared between the C and the
  Java implementations.
 
 I agree. It turns out to be a tiny amount of code though (in the case
 of Jikes RVM, at least).
 
  * The meat of the VM seems to be in the spokes that connect to the
  VM core-hub. It seems that this is where it would make the most
  sense to mix components written in C with those written in Java, to
  see which one can do a better job. If all spokes were in C, it would
  make little sense to have the hub be in Java... On the other hand if
  spokes are all Java, it makes little sense to have the hub be in C.
 
  Steve, if the spokes were in Java but the hub in C, would we then lose
  all of the aggressive inlining benefits that Java-in-Java solution can
  provide?
 
 I don't know. These are really interesting questions and ones I think
 we need to hear lots of informed opinion on. My experience with mixing
 C  Java inside the VM is limited to the interface to the MM. The
 inlining issue is key there because of the fine grain at which those
 interactions occur. Scheduling, compilation and classloading are very
 much coarser grained, so those issues are much less critical there...
 
 Cheers,
 
 --Steve



Re: Terminology etc

2005-05-24 Thread Raffaele Castagno
2005/5/24, David Griffiths [EMAIL PROTECTED]:
 
 Hi, on the subject of terminology, when you say scheduling, what do you
 mean exactly? Are you talking about monitors and other sync issues or are
 you talking about some kind of m:n thread scheduling? Or neither? :)
 
 
I'm talking about that I'm translating the 
http://wiki.apache.org/harmony/HarmonyArchitecture, and after that I will 
translate this glossary... Probably it's the best I can do, actually...I'm 
not a professional translator, but probably I can do a better job than 
google translator! :)

My bests...

Raffaele


Re: Sun lashes out at open source J2SE

2005-05-24 Thread Steve Heath
Isn't the message here: Gosling misunderstands the point of Harmony?
Anyone reading to the bottom of the article will be put right.

Just a quick question tho'. The article mentions portability and
distribution licensing. Isn't another part of the point that an OSS
virtual machine (with the backing of a big foundation like apache)
will be able to take advantage of the 'many eyes' principle, for bug
reports/fixes and performance enhancements?

On 5/24/05, Mladen Turk [EMAIL PROTECTED] wrote:
 Geir Magnusson Jr. wrote:
  Eh.
 
  Lets just keep to our purpose and message of compatibility and
  openness.
 
 When we move from 'enthusiasm' to the 'project' more and more
 'doubts' will be seen :)
 
 Let's just play our song and let others have all the doubts they wish.
 
 Regards,
 Mladen.



Re: Other interesting papers and research

2005-05-24 Thread Steve Blackburn

[EMAIL PROTECTED] wrote:


They automatically build themselves
simple JIT backends (by extracting fragments produced by the ahead of
time compiler).  This sounds like a great way to achieve portability
while achiving better performance than a conventional interpreter.
   



I guess it's a bit better or just comparable with a good interpreter.
 

They say it is a lot better: speedups of up to 1.87 over the fastest 
previous interpreter based technique, and performance comparable to 
simple native code compilers. The effort required for retargeting our 
implementation from the 386 to the PPC architecture was less than a 
person day.



In 1998, I have written such a JIT compiler concatinate code fragments
generated by GCC for each JVM instruction.


Very interesting!


Unfortunately, the JIT was
slightly slower than an interpreter in Sun's Classic VM. The
interpreter was written in x86 assembly language and implements
dynamic stack caching with 2 registers and 3 states. It performs much
better than the previous interpreter written in C.

Then I rewrote the JIT.
 

It would be interesting to hear your perspective on Ertl  Gregg's 
approach.  Did they do something you had not done?  Do they have any 
particular insight?  You are in an excellent position to make a critical 
assessment of their work.



I am not very sure which is better for us, having a portable and so-so
baseline compiler or a good interpreter which is possibly less
portable than the compiler. There will be a trade off between memory
consumption, portability and so on.
 

Ideally we will have both as components and the  capacity to choose 
either or both depending on the build we are targetting.


Cheers,

--Steve


Re: Terminology etc

2005-05-24 Thread Juan Leyva Delgado


I've added this to the wiki and linked from the main page.

- Original Message - 
From: Steve Blackburn [EMAIL PROTECTED]

To: harmony-dev@incubator.apache.org
Sent: Tuesday, May 24, 2005 8:05 AM
Subject: Terminology etc



I thought it might be helpful to clarify some terminology and a few
technical issues.  Corrections/improvements/clarifications welcome ;-)

VM core

 The precise composition of the VM core is open to discussion and
 debate.  However, I think a safe, broad definition of it is that
 part of the VM which brings together the major components such as
 JITs, classloaders, scheduler, and GC.  It's the hub in the wheel
 and is responsible for the main VM bootstrap (bootstrapping the
 classloader, starting the scheduler, memory manager, compiler etc).

VM bootstrap

 The bootstrap of the VM has a number of elements to it, including
 gathering command line arguments, and starting the various
 components (above).


In the context of a Java-in-Java VM, the above is all written in Java.


VM boot image

 The boot image is an image of a VM heap constructed ahead of time
 and populated with Java objects including code objects corresponding
 to the VM core and other elements of the VM necessary for the VM
 bootstrap (all written in Java, compiled ahead of time, packaged
 into Java objects and composed into a boot image).  The boot image
 construction phase requires a working host VM (ideally the VM is
 self-hosting).

VM bootloader

 In the case of Jikes RVM a dozen or so lines of assember and a few
 lines of C are required to basically do the job of any boot loader
 loader---mmap a boot image and throw the instruction pointer into
 it.  It will also marshal argv and make it available to the VM core.
 This is technically interesting, but actually pretty trivial and has
 little to do with the VM core (aside from ensuring the instruction
 pointer lands a nice place within the boot image ;-)

OS interface

 The VM must talk to the OS (for file IO, signal handling, etc).
 There is not a whole lot to it, but a Java wrapper around OS
 functionality is required if the VM is java-in-java.  This wrapper
 is pretty trivial and one half of it will (by necessity) be written
 in C.

I hope this brief sketch provides folks with a slightly clearer view
of what a java-in-java VM looks like, and some (tentitive) terminology
we can use to ensure we're not talking at cross purposes.

Cheers,

--Steve




Re: Terminology etc

2005-05-24 Thread Rodrigo Kumpera
There isn't much space for plugability of components beyond compile-link 
time. And I see no reason to have it otherwise.

Rodrigo

On 5/24/05, Geir Magnusson Jr. [EMAIL PROTECTED] wrote:
 
 
 On May 24, 2005, at 4:49 AM, Dmitry Serebrennikov wrote:
 
 
  * OS interface is perhaps one place where some code can be
  shared. If C version can benefit from an OS abstraction layer for
  portability, then it seems like this layer could be shared between
  the C and the Java implementations.
 
 I'm really hoping we can shelve the idea of having a C implementation
 and a Java implementation. I think we should try to mix them into
 one solution.
 
 
  Steve, if the spokes were in Java but the hub in C, would we then
  lose all of the aggressive inlining benefits that Java-in-Java
  solution can provide?
 
 I'll preface this and state that I have no idea what I'm talking
 about. That said, this reminds me a little of what was done in the
 Geronimo architecture that makes it differ from component
 architectures that use central mechanisms like JMX to let modules/
 components communicate. With Geronimo, the components are given
 references to their dependencies, rather than having them work
 through the central bus to talk between dependencies. This gives a
 big speedup, as the overhead goes away. (Ok, there are 'smart'
 proxies between the components, but that's a detail we can ignore here.
 
 I've guessed (and steve confirmed) that the boundaries between the
 modules in a VM aren't flat APIs, but something thicker, with a
 good bit of interdependency. So I'd guess that while a central hub
 would be used to let the modules resolve dependencies (The JIT needs
 to talk to the GC and vice versa), it would be something on the order
 of asking the 'hub' (won't use 'core') for something, and getting an
 object back that could be as sophisticated as needed.
 
 I'd sure like to see some of the existing thinking on this from the
 JikesVM peeps
 
 As an aside to my aside, Ben and I were musing over ways to do things
 like this, because we thought that in a multi-language-capable VM,
 you'd probably define some minimum interface APIs so that parts in
 different languages would have framework support for
 intercommunication, but also provide a discovery mechanism to so
 that like-minded components could talk in a more private, direct way.
 
 For example, suppose we are able to define the boundary between GC
 and JIT in a nice way, we'd want any object claiming to be a JIT to
 support that standard API and be able to provide an to the hub to be
 given to any other module an implementation of that interface. So
 you could do any kind of JIT implementation or experimentation and
 plug it in.
 
 However, if I wrote both the JIT and GC, I would want my JIT and GC
 to discover that and give each other a private API that took
 advantage of each other's internals. Something like what we used to
 do with COM and QueryInterface, starting with something basic and
 standard, and grubbing around in it to find something better.
 Loosely speaking :
 
 
 interface Discovery {
 Object queryInterface(UUID interfaceID);
 }
 
 interface JIT extends Discovery {
 // JIT API here
 }
 
 So in my GC implementation, an init() call that's involved when it's
 being created :
 
 void init(Discovery hubDiscovery) {
 
 JIT commonJIT = (JIT) hubDiscovery.queryInterface
 (UUID_FOR_STANDARD_JIT_API);
 
 // now lets see if this JIT knows the secret handshake
 
 CustomJIT goodJIT = (JIT) commonJIT.queryInterface
 (UUID_FOR_JIT_I_ALSO_WROTE);
 
 if (goodJIT != null) {
 
 }
 }
 
 
 and in my JIT implementation :
 
 Object queryInterface(UUID id) {
 
 if (UUID_FOR_STANDARD_JIT_API.equals(id)) {
 return this;
 }
 
 if (UUID_FOR_JIT_I_ALSO_WROTE.equals(id)) {
 return myInternalCustomJIT;
 
 return null;
 
 }
 
 
 Anyway, this reminded me of what Ben and I were talking about a few
 days ago. Note that a) I'm just making this up, b) all the above is
 trying to capture some loose ideas on the subject, and c)
 disclaimer is all done pre-coffee in a strange hotel room after
 waking up /disclaimer
 
 geir
 
 
 
 
 
 
 
  -dmitry
 
  Steve Blackburn wrote:
 
 
  I thought it might be helpful to clarify some terminology and a few
  technical issues. Corrections/improvements/clarifications
  welcome ;-)
 
  VM core
 
  The precise composition of the VM core is open to discussion and
  debate. However, I think a safe, broad definition of it is that
  part of the VM which brings together the major components such as
  JITs, classloaders, scheduler, and GC. It's the hub in the wheel
  and is responsible for the main VM bootstrap (bootstrapping the
  classloader, starting the scheduler, memory manager, compiler etc).
 
  VM bootstrap
 
  The bootstrap of the VM has a number of elements to it, including
  gathering command line arguments, and starting the various
  components (above).
 
 
  In the context of a Java-in-Java VM, the above is all written in
  Java.
 
 
  VM 

[Harmony Wiki] Update of FrontPage by Upayavira

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by Upayavira:
http://wiki.apache.org/harmony/FrontPage

The comment on the change is:
Trivial change to test commit messages.

--
   * [TechnicalFAQ]
   * [HarmonyArchitecture] Proposed Harmony Architecture (Overview)
  
- 
+  
  == Resources ==
   * [http://svn.apache.org/repos/asf/incubator/harmony/ SVN]
   * [http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10740 JIRA]


Re: Bootstrapping community (Re: [arch] The Third Way : C/C++ and Java and lets go forward)

2005-05-24 Thread Davanum Srinivas
we are talking cross-purposes...i can't keep up with all the traffic.
Are u sure, you haven't missed a nugget of information here and there?
Am not saying that you should not pick Jam. Pick jam, but there are
others who are willing to help and willing to write code and have
contributions to bring in. *PLEASE* bring them in sooner than later.
You know how bloody long it takes us to do the paperwork and get the
infrastructure work done. Let's have the discussions on the mailing
list. Document them say using java interfaces in SVN. Put up
information on the wiki to back up the discussions. Let folks write
some non-trivial code that is needed eventually but does not hinder
your kernel work/discussions. For example, someone was going to write
a javac wrapper for jdt. How do know which pieces of information on
the mailing list you considered for taking a decision. and someone may
use a totally different set of points made on the mailing list for
taking the opposite decision. We need to document those in the design
docs and/or wiki. Call me today and we can chat a bit more.

thanks,
dims 

On 5/23/05, Geir Magnusson Jr. [EMAIL PROTECTED] wrote:
 
 On May 23, 2005, at 11:03 PM, Davanum Srinivas wrote:
 
  Geir,
 
  Am not sure u understood where i am coming from. (I feel that u saying
  that we are not going to get commit privs for folks interested till
  the design discussions are over AND that design decisions are going to
  be made on the mailing list ONLY?)
 
 Huh?  I don't understand that.
 
 What I want to do is start getting people working and committing, but
 *also* getting some of the sophisticated design work done.  I think
 that we can drive one from another and vice-versa.  By having a
 little kernel-thingy (I won't call it core because after talking to
 Steve, it's clearly a matter of semantics)  that's for our
 prototyping and learning, we can start working with the
 modularization, which as I understand it, is a current topic in VM
 research.
 
 Yes, I'm hoping the design decisions are made on the list, btw. :)
 
 
  I have trouble keeping up with the mailing list and so do others...am
  not saying that we have to check-in code from all the seed VM's into
  our repo. I want to keep the momentum going by getting committers on
  board, letting them share thoughts, documents and code if any (SVN
  repo?), may be use JIRA to document requirements etc. Right now no one
  knows who is going to be working and on what and how to contribute
  etc.
 
 Yes - that's the entire point of what I'm trying to do :)
 
 
  As stefano says - good ideas and bad code build communities, the
  other three combinations do notLet's build the community without
  waiting for the discussion to end on the mailing lists and let the
  committers/community decide on how best to move forward. We don't
  (mentors) have to pick the winner? do we?
 
 There's no winner.  LIke I said, this isn't about blessing one
 thing as the solution.
 
 We aren't going to just take something from outside and say done.
 What I wanted is code to experiment with and adapt to what *we*
 design.  We can add things from elsewhere as the design require (like
 modularize parts of JikesRVM, which I understand needs to be done...).
 
 Look at Jam.  My understanding is that it sorta works, and it's very
 simple.  It sounds like it's easy to refactor to a small, kernel-
 thingy that will be a basis of support for moving forward w/ the
 modularity.  And then we can throw it out :)  or not.  Whatever we
 discover.  I think we're going to learn a lot here.
 
 geir
 
 (And while I'm a mentor, I'm also a participant :)
 
 
 
  Thanks,
  dims
 
  On 5/23/05, Geir Magnusson Jr. [EMAIL PROTECTED] wrote:
 
 
  On May 23, 2005, at 9:54 PM, Davanum Srinivas wrote:
 
 
  Geir,
  Am convinced that we can write a JVM in pure java with minimal C/C
  ++.
 
 
  Why?  If it has C/C++, it's not pure Java.  Period.
 
  This isn't about whether or not that it can be done in Java, or a way
  to get it into C/C++.  Lets get over that misconception right now.
  I'm sure that major parts can be done in Java - it's been
  demonstrated by JikesRVM, and lots of experienced VM people point in
  that direction, even with a C/C++ core.  I have no problem with that.
 
 
  How about we poll the VM candidates on who wants to help seed the
  project, ask them to do the paperwork, then we can get folks on
  board
  as committers and let them play in sandboxes (see below). Folks
  who do
  the work will then get to decide the future direction. We don't have
  to make the technical decision now before the committers are on
  board.
  What do you think?
 
 
  I don't see what we gain.  We want to create *our design*, not make
  frankenVM.  The point of starting with a small seed C/C++ kernel is
  to get the bootstrap and intrinsics support that *any* VM will need,
  pure C, pure Java, or mixed.
 
  Our discussions will point to where we have to refactor.
 
  On top of that, we build what we 

Re: [arch] The Third Way : C/C++ and Java and lets go forward

2005-05-24 Thread Stefano Mazzocchi
Peter Donald wrote:
 Hi,
 
 Steve Blackburn wrote:
 
 Lets get moving.  Comments? 


 Respectfully, I think this would be a mistake.  I think it would be a
 major error to start coding a VM core until there was more clarity
 about what we are doing and what the core would require.
 
 
 You could be right in that it is a technical mistake but in the long
 wrong it may prove not to be useful for helping to kick start the
 community and thus not a community mistake. Discussion about abstract
 concepts and implementation strategies with no concrete code that people
 can look at and play with can lead to never ending discussions that
 never seem to progress. Give people some code and some leeway to
 experiment for themselves and they are much more likely  to come around
 to understanding the problem and thus being able to agree on a way
 forward. Paraphrasing what was said earlier in this mailing list crap
 code and good ideas will lead to a good community while other
 combinations may not.
 
 Experimenting with a codebase will at least give people a feel for other
 members of the community and how they cut code. This will be worth it
 even if the entire codebase gets thrown out or rewritten from scratch.
 Some of the people here are unlikely to be swayed from C/C++ for VM
 crowd  with just words - code which they can profile and generate
 performance statistics with is much more likely to convince them. Don't
 get me wrong - discussion is good and you have convinced me (who was
 firmly in the C for VM camp) that Java In Java is a good approach - I
 would love to hear more about it (especially how synchronization,
 volatile and monitors could be plugged in) but there has been enough
 talk and probably a good time for action to start ;)
 
 So I agree with you that this move may be a technical mistake but I
 would put forth the idea that it may be a bigger community mistake if
 something concrete does not start soon. FWIW I am not involved with
 Apache or any of the VM/Classpath projects but I suspect that this is a
 way forward that would be useful using the Apache way.
 
 When a VM is built in Java, the only need for C/C++ is for direct
 interaction with the OS (one modest file of C code with interfaces to
 the most basic OS functionality), and for bootstrapping (another
 OS-specific file of C code plus about a dozen of lines of assembler).
 
 
 I guess I was under the wrong impression aswell. I thought that JRVM
 required another JVM during build to compile its own codebase and create
 an executable image. JRVM would then use this image during its
 execution. Could we use a simple interpreter for this initial stage? Or
 am I completely off base.
 
 I am very excited about all of the technology that this project is
 bringing out.  I think JamVM looks outstanding, but I think it would
 be a serious error to take it as the core for Harmony.  It was not
 *designed* with our goals in mind.  We need to understand where the
 value in JamVM (and all other candidates) is, and then maximize our
 leverage on that in the Harmony VM, whether it be through an entire VM
 (unlikely), components (I hope so), designs (I am sure), or mechanisms
 (certainly).
 
 
 I don't disagree with you but I guess I think it would be more useful to
 place community correctnes over technical correctnes at the
 begining. Once a group is working together they should be able to
 migrate to JRVM or whatever could be used as the bases.

I very much resonate with Peter.

Peter and I (and Leo) have scars all over out virtual bodies for the
years of journey in Apache Avalon, where we traded architectural
correctness over community wisdom.

Failing miserably.

The Avalon Project went down in flames. The simple technical
disagreements became poisonous (and clever) personal attacks, in order
to undermine the technical opponents and convince the community of the
value of their position. Experienced Apache members and board directors
spent years dealing with the social fallout of that project.

It took 2 years for the ASF to kill avalon. If you ask all the
participants, they will never go back. They know now how to accept
disagreement, but more, how the 'perfect architecture' is a holy grail.
Do the simplest thing that can possibly work for you and move on, the
community is an incredibly powerful engine, it's better to learn how to
use it than not.

Now Avalon is dead and nobody is missing it. For a lot of us, it's a
monument to the death of the old software engineering school applied to
open development. A mythical land. A place that so many want to see
existing that are willing to sacrifice a lot for it... but it
nevertheless can't be reached, just like the real Avalon, King Arthur's
tomb.

I am the one who proposed Avalon, in 1998, with the intention of
creating a 'kernel' for servers (before OSGi, before jboss mbeans,
before geronimo's mbeans). I am the one who worked thru to kill it:
despite the great deal of technological advancement that was 

Re: Sun lashes out at open source J2SE

2005-05-24 Thread Stefano Mazzocchi
Geir Magnusson Jr. wrote:
 Eh.
 
 Lets just keep to our purpose and message of compatibility and 
 openness.  I'm familiar with getting misquoted, or pieces taken out  of
 context, and I hope this is the case here.

Yeah.

I understand where James Gosling is coming from: he is concerned about
'forking' and I understand that. But he has to undertand that forking
the codebase and forking the functionality are two different things. The
artistic license, for example, allows you to fork the code *ONLY* if you
change all the APIs issues. I think somebody has to go down to his
office and let him know at least that, I think he has a little
stereotypical view of open source and thinks that we are all tinfoil hats.

But you see why a lot of people got burned in talking to Sun: you can't
show them the value of a community if their top management thinks that
no real software architect would ever work with a bunch of slashdot freaks.

Pretty blind, actually. Especially because Apache created more code and
value for the Java platform than anybody else. Oh well.

He does not understand our clear need to have a truly open code,
because he does *NOT* understand that we don't want the right to fork
the java platform (we can't call it java if we do, so what's the
point!), but we want the right to build a community around it. Sun
licenses don't give us that, therefore the need for Harmony.

But at the end, who cares: the JCP license allows us to do it, and our
not-for-profit status allows us to have access to the TCK for free.

We will not need words to show James Gosling that, ultimately, Harmony
is not going to be disruptive, but rather beneficial. And the reason for
this is that we value compatibility even more than he does: because a
lot of our salaries depend on it!

Let's get to work.

-- 
Stefano.



[Harmony Wiki] Update of People by DavanumSrinivas

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by DavanumSrinivas:
http://wiki.apache.org/harmony/People

--
  == Folks with prior VM experience (Alphabetical) ==
+ || Name || Email || VM related project || Interested in becoming a Committer? 
||
  || Renaud BECHADE || renaud.bechade AT numerix.com || ??? ||
- || Steve Blackburn || Steve.Blackburn AT anu.edu.au || 
[http://jikes.sourceforge.net/ JikesRVM] ||
+ || Steve Blackburn || Steve.Blackburn AT anu.edu.au || 
[http://jikes.sourceforge.net/ JikesRVM] || Yes ||
  || Guy Churchward || ??? || ??? ||
  || Archie Cobbs || archie AT dellroad.org || [http://jcvm.sourceforge.net/ 
JCVM] ||
  || Joakim Dahlstedt || ??? || ??? ||
@@ -19, +20 @@

  || Nicolas Cannasse || ncannasse AT motion-twin.com || 
[http://ncannasse.free.fr MotionTypes VM] ||
  
  == All others with Open source experience if any (Alphabetical) ==
+ || Name || Email || VM related project || Interested in becoming a Committer? 
||
  || Thorbjørn Ravn Andersen||thunderbear AT yahoo.com|| ||
  || Matt Benson || mbenson AT apache.org || Ant/Jext/iText ||
  || Ricky Clarkson || ricky_clarkson AT yahoo.com || Some patches, lots of 
talk! ||


[Harmony Wiki] Update of People by MladenTurk

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by MladenTurk:
http://wiki.apache.org/harmony/People

--
  || Tony McCrary || [EMAIL PROTECTED] || ??? ||
  || Raffaele Castagno || raffaele.castagno AT gmail.com || Available for 
translation to Italian of Harmony docs ||
  || Panagiotis Astithas || past AT ebs.gr || ??? ||
+ || Mladen Turk || mturk AT apache.org || Httpd/APR/Tomcat/Commons || Yes ||
  


People - Take #2

2005-05-24 Thread Davanum Srinivas
Folks,

Please free to add yourself to the People page -
http://wiki.apache.org/harmony/People. There is a new field where you
can indicate your willingness to become a committer :) [We are still
in the process of deciding the details of how/who/when/what of the
bootstrapping process...but this is a way for you to tell us you are
interested].

thanks,
dims

-- 
Davanum Srinivas - http://webservices.apache.org/~dims/


[Harmony Wiki] Update of People by AgustiDosaiguas

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by AgustiDosaiguas:
http://wiki.apache.org/harmony/People

--
  || Matt Benson || mbenson AT apache.org || Ant/Jext/iText ||
  || Ricky Clarkson || ricky_clarkson AT yahoo.com || Some patches, lots of 
talk! ||
  || [:IanDarwin:Ian Darwin] || ian62 AT darwinsys.com || Tomcat/OpenBSD/etc ||
- || Agustí Dosaiguas || agusti AT dosaiguas.net || ??? ||
+ || Agustí Dosaiguas || agusti AT dosaiguas.net || || Yes ||
  || Ben Laurie || ben AT algroup.co.uk || httpd/security ||
  || NickLothian || nlothian AT apache.org || Pluto/Other Stuff||
  || Geir Magnusson Jr. || geirm AT apache.org || Geronimo/Agila ||


[Harmony Wiki] Update of FrontPage by ArchieCobbs

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by ArchieCobbs:
http://wiki.apache.org/harmony/FrontPage

--
  
  
  == Volunteers with contributions ==
-   * 
[http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200505.mbox/[EMAIL
 PROTECTED] Archie Cobb - JCVM]
+   * 
[http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200505.mbox/[EMAIL
 PROTECTED] Archie Cobbs - JCVM]

  
  == Random Thoughts ==


[Harmony Wiki] Update of People by SimonChappell

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by SimonChappell:
http://wiki.apache.org/harmony/People

--
  || Name || Email || VM related project || Interested in becoming a Committer? 
||
  || Thorbjørn Ravn Andersen||thunderbear AT yahoo.com|| || Yes ||
  || Matt Benson || mbenson AT apache.org || Ant/Jext/iText ||
+ || SimonChappell || simonpeterchappell AT gmail.com || Java programmer and 
Technical Lead ||
  || Ricky Clarkson || ricky_clarkson AT yahoo.com || Some patches, lots of 
talk! ||
  || [:IanDarwin:Ian Darwin] || ian62 AT darwinsys.com || Tomcat/OpenBSD/etc ||
  || Agustí Dosaiguas || agusti AT dosaiguas.net || || Yes ||


[Harmony Wiki] Update of People by MattBenson

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by MattBenson:
http://wiki.apache.org/harmony/People

--
  || Nicolas Cannasse || ncannasse AT motion-twin.com || 
[http://ncannasse.free.fr MotionTypes VM] ||
  
  == All others with Open source experience if any (Alphabetical) ==
- || Name || Email || VM related project || Interested in becoming a Committer? 
||
+ || Name || Email || Open source project || Interested in becoming a 
Committer? ||
  || Thorbjørn Ravn Andersen||thunderbear AT yahoo.com|| || Yes ||
- || Matt Benson || mbenson AT apache.org || Ant/Jext/iText ||
+ || Matt Benson || mbenson AT apache.org || Ant/Jext/iText || Yes ||
  || SimonChappell || simonpeterchappell AT gmail.com || Java programmer and 
Technical Lead ||
  || Ricky Clarkson || ricky_clarkson AT yahoo.com || Some patches, lots of 
talk! ||
  || [:IanDarwin:Ian Darwin] || ian62 AT darwinsys.com || Tomcat/OpenBSD/etc ||


[Harmony Wiki] Update of People by TonyMcCrary

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by TonyMcCrary:
http://wiki.apache.org/harmony/People

--
  || Vikram Mohan || [http://www.aldubai.com/email/ Email Me] || 
[http://www.FaeLLe.com/ Java and Technology Blog] ||
  || Ozgur Akan || akan AT aiqa.com || www.projectme.org ||
  || Juan Leyva ||  familialeyva AT yahoo.es || small projects,patches ||
- || Tony McCrary || [EMAIL PROTECTED] || ??? ||
+ || Tony McCrary || [EMAIL PROTECTED] || ??? || Yes ||
  || Raffaele Castagno || raffaele.castagno AT gmail.com || Available for 
translation to Italian of Harmony docs ||
  || Panagiotis Astithas || past AT ebs.gr || ??? ||
  || Mladen Turk || mturk AT apache.org || Httpd/APR/Tomcat/Commons || Yes ||


[Harmony Wiki] Update of SimonChappell by SimonChappell

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by SimonChappell:
http://wiki.apache.org/harmony/SimonChappell

New page:
#format wiki
#language en
== Simon P. Chappell ==

Email: [[MailTo(simonpeterchappell AT SPAMFREE gmail DOT com)]]
or [[MailTo(simon AT SPAMFREE simonpeter DOT com)]]

A British guy living and working in the United States. I was introduced to 
computers in 1980, owning my first one (a Sinclair ZX81) in 1981. I started 
with Java in the 1997/1998 timeframe, and have been working with it ever since, 
first as a programmer and for the last four years as a Technical Lead/Mentor.

Far more information than most people would ever want to know about me is on my 
personal website: http://www.simonpeter.com/. Naturally, I have a blog: 
http://uab.blogspot.com/.


CategoryHomepage


[Harmony Wiki] Update of JVM Implementation Ideas by ArchieCobbs

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by ArchieCobbs:
http://wiki.apache.org/harmony/JVM_Implementation_Ideas

--
- 
  This is a list of various useful design ideas and implementation
  tricks that may be desirable to include in Harmony.
  
  = Per-class loader memory areas =
  
+  * Idea: class loaders and all their defined classes are unloaded all at 
once. Memory is allocated and not freed until that happens, so allocation 
behavior is stack-like. Instead of using the more general and therefore costly 
malloc() or the Java heap for class loader specific memory, use a lighter 
weight, stack like memory subsystem. In addition, all java.lang.Class objects 
can be stored in per-class loader memory instead of in the normal heap, 
reducing work for the GC subsystem.
- * Idea: class loaders and all their defined classes are unloaded
- all at once. Memory is allocated and not freed until that happens,
- so allocation behavior is stack-like. Instead of using the more
- general and therefore costly malloc() or the Java heap for
- class loader specific memory, use a lighter weight, stack like
- memory subsystem.
- * Advantages: more efficient, makes class loader unloading easier
+  * Advantages: more efficient, makes class loader unloading easier
- * Disadvantages: none
+  * Disadvantages: if java.lang.Class objects are stored in per-loader memory, 
their references must be tracked manually.
- * Origin: SableVM
+  * Origin: SableVM
  
  = Bi-directional object layout =
  
+  * Idea: let objects' primitive fields grow upward from the object head and 
let reference fields grow downward from the object head. Object pointers 
pointing to objects themselves containing object references therefore point 
into the middle of the object's memory area.
+  * Advantages: all object references are contiguous, which makes following 
these references during garbage collection, etc. easier and simpler.
+  * Disadvantages: object head (lockword, vtable pointer, etc) is not 
necessarily at the beginning of an object's memory area, which can mean extra 
work to find the head when iterating through the heap e.g. during mark/sweep GC.
- * Idea: let objects' primitive fields grow upward from the object
- head and let reference fields grow downward from the object head.
- Object pointers pointing to objects themselves containing object
- references therefore point into the middle of the object's memory
- area.
- * Advantages: all object references are contiguous, which makes
- following these references during garbage collection, etc. easier
- and simpler.
- * Disadvantages: object head (lockword, vtable pointer, etc)
- is not necessarily at the beginning of an object's memory area,
- which can mean extra work to find the head when iterating through
- the heap e.g. during mark/sweep GC.
- * Origin: SableVM
+  * Origin: SableVM
  
  = Spinless thin-locks =
  
+  * Idea: compare-and-swap instruction used to grab an object lock in the 
common case of no contention, otherwise fall back to mutexes.
- * Idea: compare-and-swap instruction used to grab an object lock
- in the common case of no contention, otherwise fall back to mutexes.
- * Advantages: very efficient
+  * Advantages: very efficient
- * Disadvantages: some assembly required
+  * Disadvantages: some assembly required
- * Origin: lots of people. SableVM has a nice version of this algorithm.
+  * Origin: lots of people. SableVM has a nice version of this algorithm.
  
+ = SableVM thread state tracking =
+ 
+  * Idea: use compare-and-swap to transition threads from running in Java mode 
vs. running in native mode, and to detect a stop the world operation. When a 
Java thread goes into native mode, i.e., it invokes a JNI function or some 
other blocking system call like pthread_cond_wait(), it has to detach itself in 
some sense from the JVM so that the JVM doesn't get stuck waiting indefinitely 
for it to return.
+  * Advantages: efficient implementation
+  * Disadvantages: none known\
+  * Origin: SableVM
+ 


[Harmony Wiki] Update of JVM Implementation Ideas by ArchieCobbs

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by ArchieCobbs:
http://wiki.apache.org/harmony/JVM_Implementation_Ideas

--
  This is a list of various useful design ideas and implementation
  tricks that may be desirable to include in Harmony.
  
- = Per-class loader memory areas =
+ === Per-class loader memory areas ===
  
   * Idea: class loaders and all their defined classes are unloaded all at 
once. Memory is allocated and not freed until that happens, so allocation 
behavior is stack-like. Instead of using the more general and therefore costly 
malloc() or the Java heap for class loader specific memory, use a lighter 
weight, stack like memory subsystem. In addition, all java.lang.Class objects 
can be stored in per-class loader memory instead of in the normal heap, 
reducing work for the GC subsystem.
   * Advantages: more efficient, makes class loader unloading easier
   * Disadvantages: if java.lang.Class objects are stored in per-loader memory, 
their references must be tracked manually.
+  * Comments: this one is pretty much a no brainer
   * Origin: SableVM
  
- = Bi-directional object layout =
+ === Bi-directional object layout ===
  
   * Idea: let objects' primitive fields grow upward from the object head and 
let reference fields grow downward from the object head. Object pointers 
pointing to objects themselves containing object references therefore point 
into the middle of the object's memory area.
   * Advantages: all object references are contiguous, which makes following 
these references during garbage collection, etc. easier and simpler.
   * Disadvantages: object head (lockword, vtable pointer, etc) is not 
necessarily at the beginning of an object's memory area, which can mean extra 
work to find the head when iterating through the heap e.g. during mark/sweep GC.
   * Origin: SableVM
  
- = Spinless thin-locks =
+ === Spinless thin-locks ===
  
   * Idea: compare-and-swap instruction used to grab an object lock in the 
common case of no contention, otherwise fall back to mutexes.
   * Advantages: very efficient
   * Disadvantages: some assembly required
+  * Comments: using some form of thin locks is a no-brainer
   * Origin: lots of people. SableVM has a nice version of this algorithm.
  
- = SableVM thread state tracking =
+ === SableVM thread state tracking ===
  
   * Idea: use compare-and-swap to transition threads from running in Java mode 
vs. running in native mode, and to detect a stop the world operation. When a 
Java thread goes into native mode, i.e., it invokes a JNI function or some 
other blocking system call like pthread_cond_wait(), it has to detach itself in 
some sense from the JVM so that the JVM doesn't get stuck waiting indefinitely 
for it to return.
-  * Advantages: efficient implementation
+  * Advantages: very efficient implementation for Java locking
-  * Disadvantages: none known\
+  * Disadvantages: none known
   * Origin: SableVM
  
+ == Signals for thread notification ===
+ 
+  * Idea: threads must periodically check whether they need to do something. 
Typically this is done at backward branches. To make this check efficient, have 
the thread read a byte from a well-known page of mmap()'d memory. When another 
thread wants the thread to check-in, it simply maps that page unreadable. The 
target thread gets a signal,
+ does whatever check required, the page is re-mapped readable, and the target 
thread returns from the signal and continues on its merry way.
+  * Advantages: efficient way to enforce checking in
+  * Disadvantages: requires mmap() and signals
+  * Origin: unknown/multiple; implemented in lots of places.
+ 


Re: [arch] The Third Way : C/C++ and Java and lets go forward

2005-05-24 Thread Archie Cobbs

Peter Donald wrote:
Are you suggesting we do it w/ JC?  :)  Is there a single copyright  
holder such


I'll have to abstain from the voting on that :-) 


I am not sure why not :)

I think that what Geir is proposing is that Harmony start from some 
exisitng codebase that is hacking on and reworked as part of a 
learning experience for everyone as part of a stepping stone before 
the real VM is rewritten once the committers understand the space 
(community and technical). If you think JC is a good place to start for 
this then speak up - but you must realize that it may end up being 
hacked a million different ways and not look like JC at all in the end. 
And it may get thrown out as people start on the next VM. If you are 
comfortable with that then ...


I have no problem with that.. with a project like this everyone has
to accept that creative destruction will happen and not be afraid to
alter cherised paradigms along the way.

If taking the check in an existing VM and start hacking on it approach
then probably JC is as good a candidate as any.

Both you and Steve have suggested the same sort of approach - namely 
that Harmony look at different ideas implemented in different JVMs and 
scoop the cream of the crop off the top. However not everyone here has 
the experience and background to highlight the important aspects of 
different JVMs. So what I would suggest is that you both start a list 
either in Wiki or in subversion  that highlights these areas and where 
they are implemented and the papers in which they described etc. This 
will make it much easier for other people to make an informed decision.


That's a good idea... I've made a small start..

  http://wiki.apache.org/harmony/JVM_Implementation_Ideas

-Archie

__
Archie Cobbs  *CTO, Awarix*  http://www.awarix.com


[Harmony Wiki] Update of People by RafalLewczuk

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by RafalLewczuk:
http://wiki.apache.org/harmony/People

--
  || Raffaele Castagno || raffaele.castagno AT gmail.com || Available for 
translation to Italian of Harmony docs ||
  || Panagiotis Astithas || past AT ebs.gr || ??? ||
  || Mladen Turk || mturk AT apache.org || Httpd/APR/Tomcat/Commons || Yes ||
+ || Rafal Lewczuk || rafal.lewczuk AT gmail.com || netatalk || not yet ||
  


[Harmony Wiki] Update of People by RafalLewczuk

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by RafalLewczuk:
http://wiki.apache.org/harmony/People

--
  || Raffaele Castagno || raffaele.castagno AT gmail.com || Available for 
translation to Italian of Harmony docs ||
  || Panagiotis Astithas || past AT ebs.gr || ??? ||
  || Mladen Turk || mturk AT apache.org || Httpd/APR/Tomcat/Commons || Yes ||
- || Rafal Lewczuk || rafal.lewczuk AT gmail.com || netatalk || not yet ||
+ || Rafal Lewczuk || rafal.lewczuk AT gmail.com || netatalk, minix / amoeba 
kernels (academic) || not yet ||
  || Rob Gonzalez || rob.gonzalez AT gmail.com || Kaffe, LSID ||
  


[Harmony Wiki] Update of People by RaffaeleCastagno

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by RaffaeleCastagno:
http://wiki.apache.org/harmony/People

--
  || Ozgur Akan || akan AT aiqa.com || www.projectme.org ||
  || Juan Leyva ||  familialeyva AT yahoo.es || small projects,patches ||
  || Tony McCrary || [EMAIL PROTECTED] || ??? || Yes ||
- || Raffaele Castagno || raffaele.castagno AT gmail.com || Available for 
translation to Italian of Harmony docs ||
+ || Raffaele Castagno || raffaele.castagno AT gmail.com || Available for 
translation to Italian of Harmony docs || not yet ||
  || Panagiotis Astithas || past AT ebs.gr || ??? ||
  || Mladen Turk || mturk AT apache.org || Httpd/APR/Tomcat/Commons || Yes ||
  || Rafal Lewczuk || rafal.lewczuk AT gmail.com || netatalk, minix / amoeba 
kernels (academic) || not yet ||


[Harmony Wiki] Update of People by pady

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by pady:
http://wiki.apache.org/harmony/People

--
  || Rafal Lewczuk || rafal.lewczuk AT gmail.com || netatalk, minix / amoeba 
kernels (academic) || not yet ||
  || Rob Gonzalez || rob.gonzalez AT gmail.com || Kaffe, LSID ||
  || Craig Blake || craigwblake AT mac.com || || Yes ||
+ || pady srini || pady.srinivasan AT fidelity.com || Java programmer/architect 
|| Yes ||
  


RE: [Harmony Wiki] Update of People by NicolasCannasse

2005-05-24 Thread dan sinclair
Can these either be turned off or sent to another list? They seem to generate a 
lot of email that isn't related to the topic at hand.

Thanks,
dan


 Dear Wiki user,
 
 You have subscribed to a wiki page or wiki category on Harmony Wiki for 
 change 
 notification.
 
 The following page has been changed by NicolasCannasse:
 http://wiki.apache.org/harmony/People
 
 --
   || Mark Wielaard || mark AT klomp.org || GNU Classpath ||
   || Jonathan Worthington || jonathan AT jwcs.net || 
 [http://www.parrotcode.org/ 
 Parrot] ||
   || Robin Garner || robin.garner AT anu.edu.au || 
 [http://jikes.sourceforge.net/ 
 JikesRVM] ||
 - || Nicolas Cannasse || ncannasse AT motion-twin.com || 
 [http://ncannasse.free.fr 
 MotionTypes VM] ||
 + || Nicolas Cannasse || ncannasse AT motion-twin.com || 
 [http://ncannasse.free.fr 
 MotionTypes VM] || Not yet ||
   
   == All others with Open source experience if any (Alphabetical) ==
   || Name || Email || Open source project || Interested in becoming a 
 Committer? 
 ||
 






[Harmony Wiki] Update of People by pady

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by pady:
http://wiki.apache.org/harmony/People

--
  || Rafal Lewczuk || rafal.lewczuk AT gmail.com || netatalk, minix / amoeba 
kernels (academic) || not yet ||
  || Rob Gonzalez || rob.gonzalez AT gmail.com || Kaffe, LSID ||
  || Craig Blake || craigwblake AT mac.com || || Yes ||
- || pady srini || pady.srinivasan AT fidelity.com || Java programmer/architect 
|| Yes ||
+ || pady srini || pady.srinivasan AT fidelity.com || Java 
programmer/architect, small projects/patches || Yes ||
  


Re: [Harmony Wiki] Update of People by RobGonzalez

2005-05-24 Thread Matt Benson
--- Apache Wiki [EMAIL PROTECTED] wrote:
 + || Rob Gonzalez || rob.gonzalez AT gmail.com ||
 Kaffe, LSID ||
   

Kaffe?--Rob, shouldn't you be under Folks with prior
VM Experience then?

-Matt
 



__ 
Yahoo! Mail 
Stay connected, organized, and protected. Take the tour: 
http://tour.mail.yahoo.com/mailtour.html 



[Harmony Wiki] Update of People by RobGonzalez

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by RobGonzalez:
http://wiki.apache.org/harmony/People

The comment on the change is:
moved myself to people wth prior VM experience.

--
  || Jonathan Worthington || jonathan AT jwcs.net || 
[http://www.parrotcode.org/ Parrot] ||
  || Robin Garner || robin.garner AT anu.edu.au || 
[http://jikes.sourceforge.net/ JikesRVM] ||
  || Nicolas Cannasse || ncannasse AT motion-twin.com || 
[http://ncannasse.free.fr MotionTypes VM] || Not yet ||
+ || Rob Gonzalez || rob.gonzalez AT gmail.com || Kaffe ||
  
  == All others with Open source experience if any (Alphabetical) ==
  || Name || Email || Open source project || Interested in becoming a 
Committer? ||
@@ -49, +50 @@

  || Panagiotis Astithas || past AT ebs.gr || ??? ||
  || Mladen Turk || mturk AT apache.org || Httpd/APR/Tomcat/Commons || Yes ||
  || Rafal Lewczuk || rafal.lewczuk AT gmail.com || netatalk, minix / amoeba 
kernels (academic) || not yet ||
- || Rob Gonzalez || rob.gonzalez AT gmail.com || Kaffe, LSID ||
  || Craig Blake || craigwblake AT mac.com || || Yes ||
  || pady srini || pady.srinivasan AT fidelity.com || Java 
programmer/architect, small projects/patches || Yes ||
  


Re: [Harmony Wiki] Update of People by RobGonzalez

2005-05-24 Thread Matt Benson
--- Rob Gonzalez [EMAIL PROTECTED] wrote:
 good point, though i feel a bit outgunned by the
 other guys in that
 list :)  dalibor, mark wielaard, tom tromey...big
 guns in free java. 
 i just hacked on kaffe for a while, did some
 debugging, build most of
 a verifier, hacked on it as part of one of those
 proposals to add
 generics to java sort of thing.

I suppose it's your call, but considering that others
of us have zero VM experience, the above sounds like
quite a bit to e.g.: me.

-Matt





__ 
Do you Yahoo!? 
Yahoo! Small Business - Try our new Resources site
http://smallbusiness.yahoo.com/resources/


Re: [Harmony Wiki] Update of People by RobGonzalez

2005-05-24 Thread Davanum Srinivas
Rob,

Please move it...any experience is better than none :)

-- dims

On 5/24/05, Rob Gonzalez [EMAIL PROTECTED] wrote:
 good point, though i feel a bit outgunned by the other guys in that
 list :)  dalibor, mark wielaard, tom tromey...big guns in free java.
 i just hacked on kaffe for a while, did some debugging, build most of
 a verifier, hacked on it as part of one of those proposals to add
 generics to java sort of thing.
 
 -Rob
 
 On 5/24/05, Matt Benson [EMAIL PROTECTED] wrote:
  --- Apache Wiki [EMAIL PROTECTED] wrote:
   + || Rob Gonzalez || rob.gonzalez AT gmail.com ||
   Kaffe, LSID ||
  
 
  Kaffe?--Rob, shouldn't you be under Folks with prior
  VM Experience then?
 
  -Matt
  
 
 
 
  __
  Yahoo! Mail
  Stay connected, organized, and protected. Take the tour:
  http://tour.mail.yahoo.com/mailtour.html
 
 
 


-- 
Davanum Srinivas - http://webservices.apache.org/~dims/


[Harmony Wiki] Update of JVM Implementation Ideas by RodrigoKumpera

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by RodrigoKumpera:
http://wiki.apache.org/harmony/JVM_Implementation_Ideas

--
  
   * Idea: let objects' primitive fields grow upward from the object head and 
let reference fields grow downward from the object head. Object pointers 
pointing to objects themselves containing object references therefore point 
into the middle of the object's memory area.
   * Advantages: all object references are contiguous, which makes following 
these references during garbage collection, etc. easier and simpler.
-  * Disadvantages: object head (lockword, vtable pointer, etc) is not 
necessarily at the beginning of an object's memory area, which can mean extra 
work to find the head when iterating through the heap e.g. during mark/sweep GC.
+  * Disadvantages: object head (lockword, vtable pointer, etc) is not 
necessarily at the beginning of an object's memory area, which can mean extra 
work to find the head when iterating through the heap e.g. during mark/sweep 
GC. Etiene notes that there is a performance degradation, mainly due to poor 
locality of this layout.
   * Origin: SableVM
  
  === Spinless thin-locks ===
@@ -37, +37 @@

  
   * Idea: threads must periodically check whether they need to do something. 
Typically this is done at backward branches. To make this check efficient, have 
the thread read a byte from a well-known page of mmap()'d memory. When another 
thread wants the thread to check-in, it simply maps that page unreadable. The 
target thread gets a signal, it does whatever check required, the page is 
re-mapped readable, and the target thread returns from the signal and continues 
on its merry way.
   * Advantages: efficient way to enforce checking in
-  * Disadvantages: requires mmap() and signals
+  * Disadvantages: requires mmap() and signals, signal latency can be an issue 
if the notification delay is critical, eg gc safepoints (see the paper from 
some Sun guys about this)
   * Origin: unknown/multiple; implemented in lots of places.
  
+ 
+ === Inline threaded interpreter ===
+ 
+  * Idea: similar to a direct threaded interpreter, but in the preparation 
step copy the code segment of some opcodes instead of pointer + data.
+  * Adavantages: faster interpreter.
+  * Disavantages: deciding with code segments can be inlined is a non-trivial, 
non-portable issue. A conservative aproach will result in worse performance.
+  * Origin: SableVM
+ 


[Harmony Wiki] Update of DaneseCooper by DaneseCooper

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by DaneseCooper:
http://wiki.apache.org/harmony/DaneseCooper

--
  #language en
  == Danese Cooper ==
  
- Adresse électronique : [[MailTo(danese AT gmail DOT com)]]
+ Email : [[MailTo(danese AT gmail DOT com)]]
  
- ...
+ Formerly employed at Sun, now at Intel...long time advocate for open source 
Java and original listed supporter of Harmony.
+ 
+ Serves on the board of the Open Source Initiative 
(http://www.opensource.org).  
+ 
+ Blog at http://danesecooper.blogs.com/divablog.
+ 
+ Co-editor of new book, ''Open Sources 2.0'', published by O'Reilly 2005
  
  
  CategoryHomepage


[Harmony Wiki] Update of People by DaliborTopic

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by DaliborTopic:
http://wiki.apache.org/harmony/People

The comment on the change is:
added contact details for dalibor topic

--
  || Ricardo Morin || ??? || ??? ||
  || Georges Saab || ??? || ??? ||
  || Bruno Souza || ??? || ??? ||
- || Dalibor Topic || ??? || Kaffe ||
+ || Dalibor Topic || robilad AT kaffe.org || [http://www.kaffe.org Kaffe] || 
Yes ||
  || Tom Tromey || ??? || GCJ ||
  || Weldon Washburn || weldonwjw AT gmail.com || ??? ||
  || Mark Wielaard || mark AT klomp.org || GNU Classpath ||


Re: [Harmony Wiki] Update of People by NicolasCannasse

2005-05-24 Thread Geir Magnusson Jr.
We'll switch to the -commits list.  We want the general developer  
community to be watching this stream also.


Thanks for the patience...

geir

On May 24, 2005, at 12:29 PM, Craig Blake wrote:


Yeah, please.  Not sure if these are really valuable anyways.

Thanks,
Craig

On May 24, 2005, at 8:33 AM, dan sinclair wrote:


Can these either be turned off or sent to another list? They seem  
to generate a lot of email that isn't related to the topic at hand.


Thanks,
dan





Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony  
Wiki for change

notification.

The following page has been changed by NicolasCannasse:
http://wiki.apache.org/harmony/People

 
--

  || Mark Wielaard || mark AT klomp.org || GNU Classpath ||
  || Jonathan Worthington || jonathan AT jwcs.net || [http:// 
www.parrotcode.org/

Parrot] ||
  || Robin Garner || robin.garner AT anu.edu.au || [http:// 
jikes.sourceforge.net/

JikesRVM] ||
- || Nicolas Cannasse || ncannasse AT motion-twin.com || [http:// 
ncannasse.free.fr

MotionTypes VM] ||
+ || Nicolas Cannasse || ncannasse AT motion-twin.com || [http:// 
ncannasse.free.fr

MotionTypes VM] || Not yet ||

  == All others with Open source experience if any (Alphabetical) ==
  || Name || Email || Open source project || Interested in  
becoming a Committer?

||















--
Geir Magnusson Jr  +1-203-665-6437
[EMAIL PROTECTED]




[Harmony Wiki] Update of DaliborTopic by DaliborTopic

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by DaliborTopic:
http://wiki.apache.org/harmony/DaliborTopic

New page:
One of the current generation of the Kaffe developers. Loud, clear, Free 
Software person. Enjoys implementing runtimes for fun from spare parts, and 
integrating those parts into a coherent whole. Has a healthy anti-NIH attitude. 
which he developed during co-maintaining [http://www.kaffe.org Kaffe] for the 
last few years. Has merged almost anything worth merging on the class library 
side into Kaffe, and is now moving to merge VM components and good work done in 
the various forks of Kaffe on isolation, single system image, jits, embedded 
and realtime solutions into the main Kaffe.org tree, harmonizing the Kaffe 
world. Blogs about the state of affairs ocassionally on 
[http://planet.classpath.org Planet Classpath], but prefers to get things done, 
rather than talk lofty about them. Regards non-free software licenses as source 
of involuntary tragicomical entertainment.


Re: [Harmony Wiki] Update of People by NicolasCannasse

2005-05-24 Thread Craig Blake

Heh, well, depends on the particular one I suppose. :-)

I don't know that it's important to be notified of each new  
interested party.  I imagine
we will get many thousands of them (ok, maybe not, but we can hope  
anyways).  Maybe
having separate messages for edits is overkill.  Is there some way to  
have it post

summaries or a digest at reasonable intervals instead?

Craig

On May 24, 2005, at 9:38 AM, Matt Benson wrote:


--- Craig Blake [EMAIL PROTECTED] wrote:


Yeah, please.  Not sure if these are really valuable
anyways.



What, People? :)

-Matt




Thanks,
Craig

On May 24, 2005, at 8:33 AM, dan sinclair wrote:



Can these either be turned off or sent to another


list? They seem


to generate a lot of email that isn't related to


the topic at hand.



Thanks,
dan




__
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com





[Harmony Wiki] Update of RobGonzalez by RobGonzalez

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by RobGonzalez:
http://wiki.apache.org/harmony/RobGonzalez

New page:
I hacked on Kaffe for a while as part of my undergraduate thesis, which 
explored how modifications to the JVM's classloader and bytecode verifier could 
allow for a more expressive source language (specifically LOOJ, an extension of 
Java that adds parametric polymorphism as well as the notions of ThisType, 
ThisClass, and exact types to Java).  The modifications would also allow the 
JVM to be more easily targeted by a wider range or source language (e.g. ML 
cannot really target the current JVM spec very well because of the constraints 
of the JVM's static type system).

I wrote most of a bytecode verifier for Kaffe--enough to test the modifications 
proposed in my thesis--but never completed it (e.g. it was a little buggy and 
didn't adequately deal with the asinine bytecode subroutine instruction, JSR).  
TomTromey wrote a complete verifier for GCJ that we were planning a merging 
into Kaffe as a replacement.

I currently work for IBM's Internet Technology Group in Cambridge and hope to 
hack on Harmony as much as I'm able to on the side.


Re: [Harmony Wiki] Trivial Update of People by RickyClarkson

2005-05-24 Thread Art - Arthit Suriyawongkul
How to unsubscribe from wiki changes update ?
I've already checked by subscription list in the wiki, it's empty.

cheers,
Art


Re: Sun lashes out at open source J2SE

2005-05-24 Thread Dan Lydick


 [Original Message]
 From: Mladen Turk [EMAIL PROTECTED]
 To: harmony-dev@incubator.apache.org
  Date: 5/24/05 5:41:28 AM
 Subject: Re: Sun lashes out at open source J2SE

 Geir Magnusson Jr. wrote:

  Eh.

  

  Lets just keep to our purpose and message of compatibility and  

  openness.

 

 When we move from 'enthusiasm' to the 'project' more and more

 'doubts' will be seen :)


As we move along, we _must_ remember the
little ditty attributed to Henry Ford:


Success is going from one failure to the next
without loss of enthusiasm.


Let's remember that we are at this point
an assemblage of disparate but interested
professionals.  We don't have to get
_everything_ right the first time, but
we do need to build a community of the
interested.

Notice a regular theme in this list being
to build community first, tinker in the
sandbox second, and build something third,
(goto step 2 until finished, and reinforce
step 1 where necessary).

We're gonna get things WRONG from time to
time, but if we're a community, we'll get
errors corrected and build it RIGHT.

In all our enthusiasm, in all our doubts,
let's be patient while we are jumping in
to our next failure, because eventually
WE WILL SUCCEED if we keep at it


Just thought y'all needed that!



 

 Let's just play our song and let others have all the doubts they wish.

 

 Regards,

 Mladen.



Dan Lydick





Re: [Harmony Wiki] Trivial Update of People by RickyClarkson

2005-05-24 Thread Upayavira

Art - Arthit Suriyawongkul wrote:

How to unsubscribe from wiki changes update ?
I've already checked by subscription list in the wiki, it's empty.


When a separate mailing list has been set up for wiki changes, the 
changes will go there, and you'll be able to (un)subscribe to that list 
however you wish.


Regards, Upayavira


Re: [Harmony Wiki] Trivial Update of People by RickyClarkson

2005-05-24 Thread Art - Arthit Suriyawongkul
On 5/24/05, Upayavira [EMAIL PROTECTED] wrote:
 When a separate mailing list has been set up for wiki changes, the
 changes will go there, and you'll be able to (un)subscribe to that list
 however you wish.

Thank you.

Art


Re: Sun lashes out at open source J2SE

2005-05-24 Thread Clinton Begin
Well said.

Failure is easy to predict, and any average person can do it.

It is more virtuous to fail having tried, than to succeed in predicting 
failure.

Therein lies the difference between average people, and exceptional people.

Clinton Begin
http://www.ibatis.com



On 5/24/05, Dan Lydick [EMAIL PROTECTED] wrote:
 
 
 
  [Original Message]
  From: Mladen Turk [EMAIL PROTECTED]
  To: harmony-dev@incubator.apache.org
  Date: 5/24/05 5:41:28 AM
  Subject: Re: Sun lashes out at open source J2SE
 
  Geir Magnusson Jr. wrote:
 
   Eh.
 
  
 
   Lets just keep to our purpose and message of compatibility and
 
   openness.
 
 
 
  When we move from 'enthusiasm' to the 'project' more and more
 
  'doubts' will be seen :)
 
 
 As we move along, we _must_ remember the
 little ditty attributed to Henry Ford:
 
 
 Success is going from one failure to the next
 without loss of enthusiasm.
 
 
 Let's remember that we are at this point
 an assemblage of disparate but interested
 professionals. We don't have to get
 _everything_ right the first time, but
 we do need to build a community of the
 interested.
 
 Notice a regular theme in this list being
 to build community first, tinker in the
 sandbox second, and build something third,
 (goto step 2 until finished, and reinforce
 step 1 where necessary).
 
 We're gonna get things WRONG from time to
 time, but if we're a community, we'll get
 errors corrected and build it RIGHT.
 
 In all our enthusiasm, in all our doubts,
 let's be patient while we are jumping in
 to our next failure, because eventually
 WE WILL SUCCEED if we keep at it
 
 
 Just thought y'all needed that!
 
 
 
 
 
  Let's just play our song and let others have all the doubts they wish.
 
 
 
  Regards,
 
  Mladen.
 
 
 
 Dan Lydick
 
 
 



[Harmony Wiki] Update of People by BlakeCrawford

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by BlakeCrawford:
http://wiki.apache.org/harmony/People

--
  || Craig Blake || craigwblake AT mac.com || || Yes ||
  || pady srini || pady.srinivasan AT fidelity.com || Java 
programmer/architect, small projects/patches || Yes ||
  || Ulrich Kunitz || kune AT deine-taler.de || patches/Mono class library/my 
own unfinished toy VM || Yes ||
+ || Blake Crawford || blake AT blakecrawford.com || cucina(coming soon),java 
technical lead || not yet ||
  


Re: [arch] The Third Way : C/C++ and Java and lets go forward

2005-05-24 Thread Steve Blackburn

Archie Cobbs wrote:


That's a good idea... I've made a small start..

  http://wiki.apache.org/harmony/JVM_Implementation_Ideas


Excellent!

--Steve


[Harmony Wiki] Trivial Update of People by IanDarwin

2005-05-24 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Harmony Wiki for 
change notification.

The following page has been changed by IanDarwin:
http://wiki.apache.org/harmony/People

--
  || SimonChappell || simonpeterchappell AT gmail.com || Java programmer and 
Technical Lead ||
  || Ricky Clarkson || ricky_clarkson AT yahoo.com || Some patches, lots of 
talk! || Contributor ||
  || DaneseCooper || danese AT gmail dot com || community/OSI ||
- || [:IanDarwin:Ian Darwin] || ian62 AT darwinsys.com || Tomcat/OpenBSD/etc ||
+ || [:IanDarwin:Ian Darwin] || ian62 AT darwinsys.com || Tomcat/OpenBSD/etc || 
Yes ||
  || Agustí Dosaiguas || agusti AT dosaiguas.net || || Yes ||
  || Ben Laurie || ben AT algroup.co.uk || httpd/security ||
  || Rafal Lewczuk || rafal.lewczuk AT gmail.com || netatalk, minix / amoeba 
kernels (academic) || not yet ||


Re: [Harmony Wiki] Trivial Update of People by IanDarwin -- STOP

2005-05-24 Thread Dan Cohen
Please harmony-dev:
Stop
Stop
Stop sending me these notices!
Stop
Stop
 -- Dan Cohen in Calgary
--
On Tuesday 24 May 2005 15:26, Apache Wiki wrote:
 Dear Wiki user,

 You have subscribed to a wiki page or wiki category on Harmony Wiki for
 change notification.

 The following page has been changed by IanDarwin:
 http://wiki.apache.org/harmony/People
 ...


Re: [Harmony Wiki] Trivial Update of People by IanDarwin -- STOP

2005-05-24 Thread Davanum Srinivas
DONE :)

On 5/24/05, Dan Cohen [EMAIL PROTECTED] wrote:
 Please harmony-dev:
 Stop
 Stop
 Stop sending me these notices!
 Stop
 Stop
  -- Dan Cohen in Calgary
 --
 On Tuesday 24 May 2005 15:26, Apache Wiki wrote:
  Dear Wiki user,
 
  You have subscribed to a wiki page or wiki category on Harmony Wiki for
  change notification.
 
  The following page has been changed by IanDarwin:
  http://wiki.apache.org/harmony/People
  ...
 


-- 
Davanum Srinivas - http://webservices.apache.org/~dims/


Re: Terminology etc

2005-05-24 Thread Ulrich Kunitz
Steve, this clarification of terminology helped me a lot to understand
your approach better. As Java-in-C camper I can even see now the
advantages in the approach. But just let me add my 2 cents of pretty
wild ideas.

Having read your MMTk papers, it appears to me that the required
JAVA extensions look a little bit like parts of P/Invoke* of
Microsoft's Common Language Runtime. (P/Invoke is a convenient way
to call C functions in the VM without the need to program glue
code in C. It must allow memory access over pointers via a
Marshal class. Security fanatics should recognize, that such a
class can be implemented for Java using JNI.) A comparable
mechanism in Harmony would not only be useful for the Java garbage
collector but also the OS interface. 

Maybe it would be possible to extend the boot image approach to
some kind of cached images of Java classes and packages, This
would require some ELF-like format for compiled Java code. Such a
feature might reduce the startup times of applications like
Eclipse a lot. If I'm not misinformed the gcj developers want to
build something like this.

IMHO a self-hosting VM has the advantage, that performance is
under your own control. Code in C will always depend on the
optimizations provided by the C compiler being used. Additionally
all the debugging/profiling/management code can be written in Java
and can use the large Java class library. The class library itself
provides also the platform abstractions, which will be needed to
support Windows and POSIX platforms with the same code.

But it might still be that C-implemented modules (particularly the
GC) are faster than their Java-implemented counterparts, because
they ignore array-index-checking, don't need write barriers and
interface calls, etc... One could follow the strategy, that
modules must support Java interfaces but might be implemented in
C. This strategy would bring us back to an design that doesn't
mandate which language has to be used to implement a certain
module.

Uli


Re: Terminology etc

2005-05-24 Thread Rodrigo Kumpera
 I think you dind't quite get how it works with MMtk. There are a few 
magic classes that receive special treatment from the compiler and 
translates method calls into pointer operations. This way MMtk can operate 
under the same condition of C code. 
 I'm not sure how did you relate interface calls with MMtk, as this is a 
non-issue. And with memory barriers, it's a problem all languages will have 
to face, be it Java, C or assembly.
   
But it might still be that C-implemented modules (particularly the
 GC) are faster than their Java-implemented counterparts, because
 they ignore array-index-checking, don't need write barriers and
 interface calls, etc... One could follow the strategy, that
 modules must support Java interfaces but might be implemented in
 C. This strategy would bring us back to an design that doesn't
 mandate which language has to be used to implement a certain
 module.
 
 Uli



Re: [arch] The Third Way : C/C++ and Java and lets go forward

2005-05-24 Thread Archie Cobbs

Weldon Washburn wrote:

In response to Geir's request, below is a first cut at a simple
high-level modular structure:

1.1)   Execution Modules
Execution Manager
Execution Engine
Code generator
Profile Collector

1.2) GC

1.3) Threading/sync Manager

1.4) Platform Portability Layer (OS and HW)

1.5) Class Libraries

1.6) Platform Accessors

1.7) VM Accessors

1.8) VM Core (the hub that glues all the above modules together)


Others I can think of... :-)

- JNI native interface module
- JNI invocation interface module
- Global/local references manager
- Reflection manager (i.e., used by reflection native code)
- Invocation manager - required to dynamically invoke methods
  from within the VM itself
- Exception manager - can unwind stacks to throw exceptions
- Bootstrapper - code to get the VM started
- Resolver - performs field, class, method resolution
- Verifier
- Class initializer - invokes clinit's
- Boot loader - the bootstrap class loader (reads ZIP files, etc)
- Class deriver - defines runtime types (including array types)
- Native library manager - dlopen()'s native libs, finds functions
- Properties manager - sets system properties (e.g., java.vm.name).
- String manager - converts between String - char *utf8; interning
- Memory allocator - allocator for non-Java-heap memory
- Finalizer module

-Archie

__
Archie Cobbs  *CTO, Awarix*  http://www.awarix.com


Re: [arch] The Third Way : C/C++ and Java and lets go forward

2005-05-24 Thread Davanum Srinivas
updated wiki with this list - http://wiki.apache.org/harmony/HarmonyArchitecture

On 5/24/05, Weldon Washburn [EMAIL PROTECTED] wrote:
 On 5/23/05, Geir Magnusson Jr. [EMAIL PROTECTED] wrote:
 
  On May 23, 2005, at 8:23 PM, Steve Blackburn wrote:
 
   Lets get moving.  Comments?
  
  
  
   Respectfully, I think this would be a mistake.  I think it would be
   a major error to start coding a VM core until there was more
   clarity about what we are doing and what the core would require.
 
  I sort of agree.  It's clear we need more clarity about
  modularization (hint, hint) and that we need to be going on that
  (hint, hint), but I would be dollars to donuts that you could frame
  out a simple high level modular structure that we could start
 
 In response to Geir's request, below is a first cut at a simple
 high-level modular structure:
 
 1.1)   Execution Modules
 Execution Manager
 Execution Engine
 Code generator
 Profile Collector
 
 1.2) GC
 
 1.3) Threading/sync Manager
 
 1.4) Platform Portability Layer (OS and HW)
 
 1.5) Class Libraries
 
 1.6) Platform Accessors
 
 1.7) VM Accessors
 
 1.8) VM Core (the hub that glues all the above modules together)
 
 How about starting a new thread titled [Modules  Interfaces] to
 discuss a) the definition of the JVM's modules and b) what the
 interface APIs look like?
 
  -- Weldon
 
  refactoring a donated core from the beginning to start playing.  I
  want to see people get their hands on showing how a VM core can be
  comprised of Java and C++.
 
  Also, I would bet that you could give us a laundry list of core
  kernel intrinsic APIs that we'd need to develop/refactor/import/etc
  for the Java pieces of the VM.
 
  
  
   but rather my understanding that we'll need a small C/C++  kernel
   to host the modules, no matter how they are written, and this  is
   a way to get that going...
  
  
   This is not the case Geir.
  
   When a VM is built in Java, the only need for C/C++ is for direct
   interaction with the OS (one modest file of C code with interfaces
   to the most basic OS functionality), and for bootstrapping (another
   OS-specific file of C code plus about a dozen of lines of
   assembler).  That's it. The kernel of the VM can be entirely
   written in Java.  Whether or not we chose to do that is another
   matter, but your comment above is technically incorrect, and
   therefore should not be the basis on which we start coding.
 
  Maybe we're just having a semantic problem - I would consider the
  bootstrap part and the OS interaction part the kernel, and probably
  some non-OS pieces like helping out w/ memory management - letting
  the java work with raw pointers.  There may be other pieces that you
  consider kernel that are in Java, and I'm fine with that.
 
  Please, just tell us what they are.
 
  
   This misconception highlights why it is that I think we need a
   seeding process to gain some collective understanding before we
   start cutting code for a new VM core.  This requires some patience
   but I think will make the difference between us producing a)
   something that is free, runs OK, and is portable, from b) something
   that leverages the outstanding collective pool of ideas at the
   table (ovm, gcj, kaffe, joeq, jamvm, jc, orp, mudgevm, jikesrvm,
   etc etc) to deliver what I think could be the best performing, most
   exciting VM, free or non-free.
 
  define free.  It has many meanings around here ;)
 
  Yes, this is just the seeding process given a kick.  You want to show
  up with JikesRVM for the core functionality, I will do everything I
  can to help you get the paperwork done.  But will need the direct
  interaction code, and the bootstraping code, and starting w/ a small
  existing project to help us on our way is all I was doing.
 
  
   I am very excited about all of the technology that this project is
   bringing out.  I think JamVM looks outstanding, but I think it
   would be a serious error to take it as the core for Harmony.
 
  That wasn't the intention, in that it's not the core as a VM, but
  core as the kernel that we need for the modules, which may or may not
  be in Java.  I understand that there will be parts that will be best
  done in Java - I'm all for it.
 
 It was not *designed* with our goals in mind.  We need to
   understand where the value in JamVM (and all other candidates) is,
   and then maximize our leverage on that in the Harmony VM, whether
   it be through an entire VM (unlikely), components (I hope so),
   designs (I am sure), or mechanisms (certainly).
  
   I understand that it is important that we seize the enthusiasm of
   the list and start working, but respectfully, I think that cutting
   code for a VM kernel right now would be a bad mistake, one that
   might be gratifying in the short term but that is likely to lay the
   wrong foundation for what I think may become the most exciting VM
   project yet.
 
  We're not 

Re: Terminology etc

2005-05-24 Thread Robin Garner
  Steve, if the spokes were in Java but the hub in C, would we then lose 
  all of the aggressive inlining benefits that Java-in-Java solution can 
  provide?
 
 I don't know.  These are really interesting questions and ones I think 
 we need to hear lots of informed opinion on.  My experience with mixing 
 C  Java inside the VM is limited to the interface to the MM.  The 
 inlining issue is key there because of the fine grain at which those 
 interactions occur.  Scheduling, compilation and classloading are very 
 much coarser grained, so those issues are much less critical there...

To me the biggest challenge in mixing Java and C in a VM is the heap
management issue.  I can see several approaches, none of which are
particularly palatable to me:

a) C code uses its own heap (malloc), and regards the Java heap as 
  read-only, and locks out the GC while it reads Java data.  

b) Use conservative GC for vm-internal data

c) C code disables GC, and guarantees only to leave valid java objects
  on the Java heap.

For example, suppose the classloader is written in Java, and leaves
bytecode objects on the Java heap.  Then you have an opt compiler
written in C, which needs to access them.  Using (a), you disable GC,
malloc some heap for a copy of the bytecode, then re-enable GC.  Then
the compiler runs, produces some machine code, disables GC and copies it
back to the Java heap.  Then cleans up its own intermediate data
structures ...

It sounds like unnecessay complexity to me.

Robin





vmmagic

2005-05-24 Thread Steve Blackburn

Perhaps it is worth saying a little more about vmmagic.

The basic idea is to provide the necessary extensions to Java for the
construction of a java-in-java virtual machine.  These fall into two
categories: pragmas (some for safety, some for performance) and
unboxed types.  In all cases, these are regular java expressions that
are noticed by the compiler as being special, intercepted and
compiled to reflect the defined semantics of vmmagic.  Thus, for
example, when the compiler sees an instance of Address.loadInt(), it
compiles it into a load instruction.

Aside from satisfying the need to directly access memory, these types
are used to enforce type safety, provide us with unsigned word type
and abstract over issues such as the size of an address (32/64).  The
latter is extremely valuable in Jikes RVM where we support both 32 
64 bit architectures.

I've written a few notes about the history of vmmagic below, but I
want to say right now that vmmagic has evolved and will continue to
evolve, particularly in light of new developments such as annotations
etc in J2SE 5.

Pragmas.

 
http://jikesrvm.sourceforge.net/api/org/vmmagic/pragma/package-summary.html


 The magic pragmas can in principle be scoped at least three ways.
 Per-class (overloading the implements keyword), per-method
 (overloading the throws keyword), and intra-method (overloading the
 try catch keywords).  Presently we only use the first two.

 An example of a performance related pragma is InlinePragma, which is
 used to indicate that a method should always be inlined by the
 optimizing compiler.

 http://jikesrvm.sourceforge.net/api/org/vmmagic/pragma/InlinePragma.html

 An example of a correctness related pragma is UninterruptiblePragma
 which ensures that the compiler does not allow a method to be
 interrupted for thread switching (by omitting yield points).

 
http://jikesrvm.sourceforge.net/api/org/vmmagic/pragma/UninterruptiblePragma.html


Unboxed Types.

 
http://jikesrvm.sourceforge.net/api/org/vmmagic/unboxed/package-summary.html


 The Address type is used to provide raw memory access through its
 loadtype() and storetype() methods.  It also provides a memory
 barrier abstraction with a prepare()/attempt() idiom.  Finally, it
 abstracts over address width (32/64).  Despite the appearance of a
 value field in the javadoc below, in fact the type is materialized
 by the compiler as a primitive 32/64 bit type, not an object, and
 its methods are reduced to the appropriate instructions (load, store
 etc), not method calls.

 http://jikesrvm.sourceforge.net/api/org/vmmagic/unboxed/Address.html

 The ObjectReference type is used to provide an abstraction over
 object identifiers (rather than using Address, which is somewhat
 like using void*).  In the case of Jikes RVM ObjectReferences are
 materialized as 32/64 bit primitive types with direct operations,
 with the toAddress() operator returning that same value (since Jikes
 RVM uses addresses as object identifiers).  However in a VM that
 used handles, an ObjectReference would map to a handle and
 toAddress() would dereference the handle.

 
http://jikesrvm.sourceforge.net/api/org/vmmagic/unboxed/ObjectReference.html



For more information I suggest you browse the java doc, and if brave,
venture into the Jikes RVM compilers and see how the magic is actually
implemented!

Brief history

  The use of magic dates back to the beginning of the Jikes RVM
  project (then known as Jalapeno).  I know of three major sources of
  refinement.  First the OVM group, and in particular Chapman Flack
  (Purdue), made significant improvements to the Jalapeno approach to
  magic. Perry Cheng (IBM Research) then wrote an initial version of
  the Address, Word and Extent classes and in doing so with Kris
  Venstermans (Ghent) and Dave Grove (IBM Research) was able to
  identify and fix all of the thousands of uses of int (for
  address) in the Jikes RVM codebase.  This was key to getting a 64
  bit port going.  Daniel Frampton (ANU) was responsible for
  packaging it as org.vmmagic, separating the unboxed and pragma
  types, and introducing new types including ObjectReference.  Most
  of the original pragma types were written by Stephen Fink and Dave
  Grove (IBM Research).


Cheers,

--Steve