[rvm-research] JikesRVM vs Maxine

View: New views
20 Messages — Rating Filter:   Alert me  
< Prev | 1 - 2 | Next >

[rvm-research] JikesRVM vs Maxine

by Luca Ferrari :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi all,
this could sound trivial, but I cannot find any comparison between JikesRVM and
Sun's Maxine project
(http://wikis.sun.com/display/MaxineVM/Home;jsessionid=6EB9EEC979A763F1D2DE63505437C6E2).
Anyone can give me clues about differences between the machines?

Thanks,
Luca

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] JikesRVM vs Maxine

by Tony Hosking :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Luca,

JikesRVM and Maxine both address broadly similar goals: building a reliable, performance-oriented Java virtual machine in Java.  They both operate in broadly similar ways (no interpreter, image compile ahead-of-time, JIT compile at run-time).  Until recently performance has had less emphasis for Maxine than Jikes RVM, but I know that Ben Titzer at Sun has been integrating a Java-coded reimplementation of the "HotSpot client" compiler into Maxine, which will provide much better performance than the current Maxine baseline compiler.  If Ben is listening perhaps he can comment on the similarities and differences.

Although Jikes RVM does give excellent performance (comparable to commercial VMs on established benchmarks), there are pieces of the system (like the opt compiler) that are still in need of some loving care and feeding.  As an alternative to the opt compiler Ben and I recently talked about what it might take to port his "Hotspot client" compiler, which has been designed to be VM-portable, into Jikes RVM.  That would be an interesting and potentially useful project for someone to take on.

I hope others may care to chime in regarding Maxine versus Jikes RVM.

Antony Hosking | Associate Professor | Computer Science | Purdue University
305 N. University Street | West Lafayette | IN 47907 | USA
Office +1 765 494 6001 | Mobile +1 765 427 5484


On 3 Nov 2009, at 10:04, Luca Ferrari wrote:

Hi all,
this could sound trivial, but I cannot find any comparison between JikesRVM and
Sun's Maxine project
(http://wikis.sun.com/display/MaxineVM/Home;jsessionid=6EB9EEC979A763F1D2DE63505437C6E2).
Anyone can give me clues about differences between the machines?

Thanks,
Luca

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] JikesRVM vs Maxine

by Ian Rogers (nabble) :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Luca,

your e-mail could be classified as flame bait :-) I'll try to give
some objective opinions and also include MRP [1] :

Maturity:
Jikes RVM is considerably more mature than Maxine, this means it has
more compiler optimizations, garbage collectors and testing done on
it. On the other hand Maxine doesn't struggle under some of the
baggage Jikes RVM does, for example, it is only more recently Jikes
RVM has made reasonable use of package structure.

Performance:
MRP is the fastest of the metacircular VMs, improving upon Jikes RVM
as it does which comes in next. I believe Maxine's optimizing compiler
is being rethought.

Debuggability:
Maxine includes a tool for debugging itself, this is a great
improvement over Jikes RVM's raw assembler in GDB, or printf style
debugging. MRP is currently like Jikes RVM in this respect but I'm
working on debugger integration.

Architectures supported:
Jikes RVM is essentially a 32bit VM, unless you can find a 64bit
PowerPC (and even then ymmv). MRP provides support for x86-64, but
bugs remain in its optimizing compiler in this mode of operation.
Maxine targets x86-64 and ARM. Of all the metacircular VMs, MRP is the
only one to support running on Windows.

Active development:
To be objective I'd look at ohloh:
MRP - http://www.ohloh.net/p/MRP/analyses/latest
RVM - http://www.ohloh.net/p/11470/analyses/latest
Maxine- http://www.ohloh.net/p/maxine/analyses/latest
my belief is that development, at least in public, of Jikes RVM and
Maxine has plateaued. MRP development continues :-)

Regards,
Ian

[1] http://mrp.codehaus.org/

2009/11/3 Luca Ferrari <fluca1978@...>:

> Hi all,
> this could sound trivial, but I cannot find any comparison between JikesRVM and
> Sun's Maxine project
> (http://wikis.sun.com/display/MaxineVM/Home;jsessionid=6EB9EEC979A763F1D2DE63505437C6E2).
> Anyone can give me clues about differences between the machines?
>
> Thanks,
> Luca
>
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry(R) Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay
> ahead of the curve. Join us from November 9 - 12, 2009. Register now!
> http://p.sf.net/sfu/devconference
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] JikesRVM vs Maxine

by gnu_andrew :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/11/3 Ian Rogers <ian.rogers@...>:

> Hi Luca,
>
> your e-mail could be classified as flame bait :-) I'll try to give
> some objective opinions and also include MRP [1] :
>
> Maturity:
> Jikes RVM is considerably more mature than Maxine, this means it has
> more compiler optimizations, garbage collectors and testing done on
> it. On the other hand Maxine doesn't struggle under some of the
> baggage Jikes RVM does, for example, it is only more recently Jikes
> RVM has made reasonable use of package structure.
>
> Performance:
> MRP is the fastest of the metacircular VMs, improving upon Jikes RVM
> as it does which comes in next. I believe Maxine's optimizing compiler
> is being rethought.
>
> Debuggability:
> Maxine includes a tool for debugging itself, this is a great
> improvement over Jikes RVM's raw assembler in GDB, or printf style
> debugging. MRP is currently like Jikes RVM in this respect but I'm
> working on debugger integration.
>
> Architectures supported:
> Jikes RVM is essentially a 32bit VM, unless you can find a 64bit
> PowerPC (and even then ymmv). MRP provides support for x86-64, but
> bugs remain in its optimizing compiler in this mode of operation.
> Maxine targets x86-64 and ARM. Of all the metacircular VMs, MRP is the
> only one to support running on Windows.
>
> Active development:
> To be objective I'd look at ohloh:
> MRP - http://www.ohloh.net/p/MRP/analyses/latest
> RVM - http://www.ohloh.net/p/11470/analyses/latest
> Maxine- http://www.ohloh.net/p/maxine/analyses/latest
> my belief is that development, at least in public, of Jikes RVM and
> Maxine has plateaued. MRP development continues :-)
>
> Regards,
> Ian
>
> [1] http://mrp.codehaus.org/
>
> 2009/11/3 Luca Ferrari <fluca1978@...>:
>> Hi all,
>> this could sound trivial, but I cannot find any comparison between JikesRVM and
>> Sun's Maxine project
>> (http://wikis.sun.com/display/MaxineVM/Home;jsessionid=6EB9EEC979A763F1D2DE63505437C6E2).
>> Anyone can give me clues about differences between the machines?
>>
>> Thanks,
>> Luca
>>
>> ------------------------------------------------------------------------------
>> Come build with us! The BlackBerry(R) Developer Conference in SF, CA
>> is the only developer event you need to attend this year. Jumpstart your
>> developing skills, take BlackBerry mobile applications to market and stay
>> ahead of the curve. Join us from November 9 - 12, 2009. Register now!
>> http://p.sf.net/sfu/devconference
>> _______________________________________________
>> Jikesrvm-researchers mailing list
>> Jikesrvm-researchers@...
>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>
>
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry(R) Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay
> ahead of the curve. Join us from November 9 - 12, 2009. Register now!
> http://p.sf.net/sfu/devconference
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>

The OHLOH comparison is a little unfair, given that doesn't seem to be
the Maxine code, but presumably just its public web pages.
--
Andrew :-)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net

PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint: F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] JikesRVM vs Maxine

by Ben L. Titzer :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Luca,

JikesRVM and Maxine both address broadly similar goals: building a reliable, performance-oriented Java virtual machine in Java.  They both operate in broadly similar ways (no interpreter, image compile ahead-of-time, JIT compile at run-time).  Until recently performance has had less emphasis for Maxine than Jikes RVM, but I know that Ben Titzer at Sun has been integrating a Java-coded reimplementation of the "HotSpot client" compiler into Maxine, which will provide much better performance than the current Maxine baseline compiler.  If Ben is listening perhaps he can comment on the similarities and differences.

Sure. As mentioned, both are compile-only Java VMs written in Java, though we have been considering building an interpreter for Maxine to avoid compiling a lot of small startup methods. Maxine is a little more IDE-friendly and relies less on source code generation and preprocessing than Jikes. It also has a custom debugger tool called the "Maxine Inspector" which allows developers to look into the guts of a running VM and debug it--a very big productivity win in our opinion.

Maxine is intended to be very modular and there are several big components that can be mixed and matched, including the reference representation, the GC implementation, monitor implementation, optimizing compiler, JIT compiler, etc.

Maxine uses the standard JDK 1.6 from Sun (the same that is used by HotSpot) without modification. It short-circuits some of the native methods in the JDK with its own implementation.

Maxine's garbage collectors are not as mature as those in Jikes RVM. It includes a stop-the-world semi-space collector as the default. It has an incomplete implementation of the Beltway framework including some generational collectors, but these are not fully integrated. Porting MMTk to Maxine might be an option, but we haven't had the resources to explore this.

Maxine has had native threads from the beginning (Jikes switched to them in 3.0) and a state-of-the-art per-thread safepoint mechanism that supports stopping individual threads selectively for GC or biased lock revocation. 

Unfortunately Maxine's performance is hampered by a poor optimizing compiler. Maxine lags HotSpot server by a factor of 3-6 on the DaCapo benchmarks on x86-64 Solaris, our main platform. The ratio is better on x86-64 Darwin because HotSpot is much slower there (blame Apple; they maintain that port and we are not even sure what modifications they have made to HotSpot).

Although Jikes RVM does give excellent performance (comparable to commercial VMs on established benchmarks), there are pieces of the system (like the opt compiler) that are still in need of some loving care and feeding.  As an alternative to the opt compiler Ben and I recently talked about what it might take to port his "Hotspot client" compiler, which has been designed to be VM-portable, into Jikes RVM.  That would be an interesting and potentially useful project for someone to take on.

Yes, in building C1X from the client compiler (aka C1), we have tried to make this runtime separation as clean as possible, both as an experiment in stressing Maxine's modularity, but also with an eye to potentially back-porting it to HotSpot or to another VM. I think it makes a lot of sense to try putting C1X into Jikes RVM. This represents a golden opportunity to VM researchers to both explore optimizations in the same compiler across VMs as well as test the sensitivity of the VM to the compiler. It would be really great if some Jikes RVM researchers were also interested in this idea.

We are rushing to finish up some loose ends in C1X but the source code is available as part of the Maxine project. We are planning on doing some refactoring and more documentation and I think by January or so, it will be in good shape for this experiment.

Thanks for cc'ing me Tony, I hope that answers some questions. We will consider adding a FAQ section regarding the Jikes vs Maxine topic on our Wiki.

-B


On 3 Nov 2009, at 10:04, Luca Ferrari wrote:

Hi all,
this could sound trivial, but I cannot find any comparison between JikesRVM and
Sun's Maxine project
(http://wikis.sun.com/display/MaxineVM/Home;jsessionid=6EB9EEC979A763F1D2DE63505437C6E2).
Anyone can give me clues about differences between the machines?

Thanks,
Luca

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers



------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] JikesRVM vs Maxine

by Tony Hosking :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On 3 Nov 2009, at 13:57, Ben L. Titzer wrote:

> Maxine has had native threads from the beginning (Jikes switched to  
> them in 3.0) and a state-of-the-art per-thread safepoint mechanism  
> that supports stopping individual threads selectively for GC or  
> biased lock revocation.

Interestingly, Jikes native threads also now have a very similar  
mechanism, independently devised.


------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] JikesRVM vs Maxine

by gnu_andrew :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

2009/11/3 Ben L. Titzer <Ben.Titzer@...>:
> Hi Luca,

snip...

> Maxine uses the standard JDK 1.6 from Sun (the same that is used by HotSpot)
> without modification. It short-circuits some of the native methods in the
> JDK with its own implementation.

Presumably it also works with OpenJDK6?

>
> Yes, in building C1X from the client compiler (aka C1), we have tried to
> make this runtime separation as clean as possible, both as an experiment in
> stressing Maxine's modularity, but also with an eye to potentially
> back-porting it to HotSpot or to another VM. I think it makes a lot of sense
> to try putting C1X into Jikes RVM. This represents a golden opportunity to
> VM researchers to both explore optimizations in the same compiler across VMs
> as well as test the sensitivity of the VM to the compiler. It would be
> really great if some Jikes RVM researchers were also interested in this
> idea.

Backporting it to HotSpot sounds interesting -- perhaps it could be
made to work with the zero assembler port
(http://today.java.net/pub/a/today/2009/05/21/zero-and-shark-openjdk-port.html)
and thus gives us a platform independent HotSpot port with JIT?

> We are rushing to finish up some loose ends in C1X but the source code is
> available as part of the Maxine project. We are planning on doing some
> refactoring and more documentation and I think by January or so, it will be
> in good shape for this experiment.
> Thanks for cc'ing me Tony, I hope that answers some questions. We will
> consider adding a FAQ section regarding the Jikes vs Maxine topic on our
> Wiki.
> -B
>
> On 3 Nov 2009, at 10:04, Luca Ferrari wrote:
>
> Hi all,
> this could sound trivial, but I cannot find any comparison between JikesRVM
> and
> Sun's Maxine project
> (http://wikis.sun.com/display/MaxineVM/Home;jsessionid=6EB9EEC979A763F1D2DE63505437C6E2).
> Anyone can give me clues about differences between the machines?
>
> Thanks,
> Luca
>
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry(R) Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay
> ahead of the curve. Join us from November 9 - 12, 2009. Register now!
> http://p.sf.net/sfu/devconference
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>
>



--
Andrew :-)

Free Java Software Engineer
Red Hat, Inc. (http://www.redhat.com)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net

PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint: F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] JikesRVM vs Maxine

by Doug Simon :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


On Nov 5, 2009, at 6:43 AM, Andrew John Hughes wrote:

> 2009/11/3 Ben L. Titzer <Ben.Titzer@...>:
>> Hi Luca,
>
> snip...
>
>> Maxine uses the standard JDK 1.6 from Sun (the same that is used by  
>> HotSpot)
>> without modification. It short-circuits some of the native methods  
>> in the
>> JDK with its own implementation.
>
> Presumably it also works with OpenJDK6?

Yes. One of the machines in our repository gate is running Ubuntu 9.04  
with OpenJDK6 and so the port is tested on each commit.

>> Yes, in building C1X from the client compiler (aka C1), we have  
>> tried to
>> make this runtime separation as clean as possible, both as an  
>> experiment in
>> stressing Maxine's modularity, but also with an eye to potentially
>> back-porting it to HotSpot or to another VM. I think it makes a lot  
>> of sense
>> to try putting C1X into Jikes RVM. This represents a golden  
>> opportunity to
>> VM researchers to both explore optimizations in the same compiler  
>> across VMs
>> as well as test the sensitivity of the VM to the compiler. It would  
>> be
>> really great if some Jikes RVM researchers were also interested in  
>> this
>> idea.
>
> Backporting it to HotSpot sounds interesting -- perhaps it could be
> made to work with the zero assembler port
> (http://today.java.net/pub/a/today/2009/05/21/zero-and-shark-openjdk-port.html 
> )
> and thus gives us a platform independent HotSpot port with JIT?

I was not aware of the Zero work but having just read the page you  
mention, I don't see why it wouldn't work. At the moment, we're  
focusing on integrating C1X into Maxine (while maintaining the clean  
VM/compiler interface) and hope to be done by Jan. By then, we'd be  
very interested in trying to integrate it with HotSpot which is when  
it may become interesting for the Zero project.

-Doug

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] JikesRVM vs Maxine

by Suriya Subramanian :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Does anyone have sense of what effort it would take to port Maxine's
inspector to Jikes RVM? Is Inspector modular enough to be used with Jikes
RVM (if we are to make it understand Jikes RVM's organization of code and
data)?

Also, are there licensing issues involved?

Suriya

On Thu, Nov 05, 2009 at 08:46:03AM -0800, Doug Simon wrote:

> Date: Thu, 05 Nov 2009 08:46:03 -0800
> From: Doug Simon <Doug.Simon@...>
> To: Andrew John Hughes <gnu_andrew@...>
> Cc: "General discussion of Jikes RVM design, implementation, issues,
> and plans" <jikesrvm-researchers@...>,
>         Tony Hosking <hosking@...>
> Subject: Re: [rvm-research] JikesRVM vs Maxine
> Reply-To: "General discussion of Jikes RVM design, implementation, issues,
> and plans" <jikesrvm-researchers@...>
>
>
> On Nov 5, 2009, at 6:43 AM, Andrew John Hughes wrote:
>
> > 2009/11/3 Ben L. Titzer <Ben.Titzer@...>:
> >> Hi Luca,
> >
> > snip...
> >
> >> Maxine uses the standard JDK 1.6 from Sun (the same that is used by  
> >> HotSpot)
> >> without modification. It short-circuits some of the native methods  
> >> in the
> >> JDK with its own implementation.
> >
> > Presumably it also works with OpenJDK6?
>
> Yes. One of the machines in our repository gate is running Ubuntu 9.04  
> with OpenJDK6 and so the port is tested on each commit.
>
> >> Yes, in building C1X from the client compiler (aka C1), we have  
> >> tried to
> >> make this runtime separation as clean as possible, both as an  
> >> experiment in
> >> stressing Maxine's modularity, but also with an eye to potentially
> >> back-porting it to HotSpot or to another VM. I think it makes a lot  
> >> of sense
> >> to try putting C1X into Jikes RVM. This represents a golden  
> >> opportunity to
> >> VM researchers to both explore optimizations in the same compiler  
> >> across VMs
> >> as well as test the sensitivity of the VM to the compiler. It would  
> >> be
> >> really great if some Jikes RVM researchers were also interested in  
> >> this
> >> idea.
> >
> > Backporting it to HotSpot sounds interesting -- perhaps it could be
> > made to work with the zero assembler port
> > (http://today.java.net/pub/a/today/2009/05/21/zero-and-shark-openjdk-port.html 
> > )
> > and thus gives us a platform independent HotSpot port with JIT?
>
> I was not aware of the Zero work but having just read the page you  
> mention, I don't see why it wouldn't work. At the moment, we're  
> focusing on integrating C1X into Maxine (while maintaining the clean  
> VM/compiler interface) and hope to be done by Jan. By then, we'd be  
> very interested in trying to integrate it with HotSpot which is when  
> it may become interesting for the Zero project.
>
> -Doug
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] JikesRVM vs Maxine

by Doug Simon :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Suriya,

On Nov 5, 2009, at 2:45 PM, Suriya Subramanian wrote:

> Does anyone have sense of what effort it would take to port Maxine's
> inspector to Jikes RVM? Is Inspector modular enough to be used with  
> Jikes
> RVM (if we are to make it understand Jikes RVM's organization of  
> code and
> data)?

While the Inspector is somewhat modular in its design, it is tightly  
coupled to the internal data structures of Maxine. This is not  
accidental - it actually makes the Inspector a lot easier to implement  
and keep in sync with VM changes. That said, there's no technical  
reason that it couldn't molded to bind to Jikes types instead. I'll  
let Michael (the core Inspector engineer) add more if he likes.

> Also, are there licensing issues involved?

While I'm not a lawyer, I believe that the GPL2 license Maxine is  
under should not be a roadblock to others using Maxine code.

-Doug

> On Thu, Nov 05, 2009 at 08:46:03AM -0800, Doug Simon wrote:
>> Date: Thu, 05 Nov 2009 08:46:03 -0800
>> From: Doug Simon <Doug.Simon@...>
>> To: Andrew John Hughes <gnu_andrew@...>
>> Cc: "General discussion of Jikes RVM design, implementation, issues,
>> and plans" <jikesrvm-researchers@...>,
>>        Tony Hosking <hosking@...>
>> Subject: Re: [rvm-research] JikesRVM vs Maxine
>> Reply-To: "General discussion of Jikes RVM design, implementation,  
>> issues,
>> and plans" <jikesrvm-researchers@...>
>>
>>
>> On Nov 5, 2009, at 6:43 AM, Andrew John Hughes wrote:
>>
>>> 2009/11/3 Ben L. Titzer <Ben.Titzer@...>:
>>>> Hi Luca,
>>>
>>> snip...
>>>
>>>> Maxine uses the standard JDK 1.6 from Sun (the same that is used by
>>>> HotSpot)
>>>> without modification. It short-circuits some of the native methods
>>>> in the
>>>> JDK with its own implementation.
>>>
>>> Presumably it also works with OpenJDK6?
>>
>> Yes. One of the machines in our repository gate is running Ubuntu  
>> 9.04
>> with OpenJDK6 and so the port is tested on each commit.
>>
>>>> Yes, in building C1X from the client compiler (aka C1), we have
>>>> tried to
>>>> make this runtime separation as clean as possible, both as an
>>>> experiment in
>>>> stressing Maxine's modularity, but also with an eye to potentially
>>>> back-porting it to HotSpot or to another VM. I think it makes a lot
>>>> of sense
>>>> to try putting C1X into Jikes RVM. This represents a golden
>>>> opportunity to
>>>> VM researchers to both explore optimizations in the same compiler
>>>> across VMs
>>>> as well as test the sensitivity of the VM to the compiler. It would
>>>> be
>>>> really great if some Jikes RVM researchers were also interested in
>>>> this
>>>> idea.
>>>
>>> Backporting it to HotSpot sounds interesting -- perhaps it could be
>>> made to work with the zero assembler port
>>> (http://today.java.net/pub/a/today/2009/05/21/zero-and-shark-openjdk-port.html
>>> )
>>> and thus gives us a platform independent HotSpot port with JIT?
>>
>> I was not aware of the Zero work but having just read the page you
>> mention, I don't see why it wouldn't work. At the moment, we're
>> focusing on integrating C1X into Maxine (while maintaining the clean
>> VM/compiler interface) and hope to be done by Jan. By then, we'd be
>> very interested in trying to integrate it with HotSpot which is when
>> it may become interesting for the Zero project.
>>
>> -Doug
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports  
>> 2008 30-Day
>> trial. Simplify your report design, integration and deployment -  
>> and focus on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> _______________________________________________
>> Jikesrvm-researchers mailing list
>> Jikesrvm-researchers@...
>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

[rvm-research] How VMRequest.create() ask for memory resources?

by lltong :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear all,

I am a little bit confused here, as described in the source:

/  public static VMRequest create() {
    return new VMRequest(REQUEST_DISCONTIGUOUS, Address.zero(),
Extent.zero(), 0f, false);
  }/

It seems request nothing.
By the way, can anyone tell me the difference between dis-contiguous and
contiguous space?
Thanks a lot.

--
Regards,
Liangliang


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] How VMRequest.create() ask for memory resources?

by Robin Garner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

lltong wrote:

> Dear all,
>
> I am a little bit confused here, as described in the source:
>
> /  public static VMRequest create() {
>     return new VMRequest(REQUEST_DISCONTIGUOUS, Address.zero(),
> Extent.zero(), 0f, false);
>   }/
>
> It seems request nothing.
> By the way, can anyone tell me the difference between dis-contiguous and
> contiguous space?
> Thanks a lot.
>

A VMRequest is a 'parameter object' - the only way a VMRequest is used
is to pass it to the constructor of a Space, in order to specify how the
Space should use virtual memory.  You should look in the code for Space
to see how this information is used.

A contiguous space is a single uninterrupted region of virtual memory,
eg [60000000-6FFFFFFF].  A discontiguous space consists of (potentially)
multiple regions, interleaved with other spaces.

Arguably, the multiple 'create()' methods of VMRequest should have more
descriptive names.

hth,
Robin

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] How VMRequest.create() ask for memory resources?

by lltong :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear Robin,

Thanks.
I took a look at the "Space", seems that it will affect this code segment:

if (vmRequest.type == VMRequest.REQUEST_DISCONTIGUOUS) {
      this.contiguous = false;
      this.descriptor = SpaceDescriptor.createDescriptor();
      this.start = Address.zero();
      this.extent = Extent.zero();
      this.lastDiscontiguousRegion = Address.zero();
      VM.memory.setHeapRange(index, HEAP_START, HEAP_END);
      return;
    }

If VMRequest is used without parameters, its  type will be equal to  
REQUEST_DISCONTIGUOUS, so that code segment is executed. But it seems to
set the entire heap range for even one semi-space. Then where can
another semi-space locate?

Thanks in advance.

Robin Garner wrote:

> lltong wrote:
>  
>> Dear all,
>>
>> I am a little bit confused here, as described in the source:
>>
>> /  public static VMRequest create() {
>>     return new VMRequest(REQUEST_DISCONTIGUOUS, Address.zero(),
>> Extent.zero(), 0f, false);
>>   }/
>>
>> It seems request nothing.
>> By the way, can anyone tell me the difference between dis-contiguous and
>> contiguous space?
>> Thanks a lot.
>>
>>    
>
> A VMRequest is a 'parameter object' - the only way a VMRequest is used
> is to pass it to the constructor of a Space, in order to specify how the
> Space should use virtual memory.  You should look in the code for Space
> to see how this information is used.
>
> A contiguous space is a single uninterrupted region of virtual memory,
> eg [60000000-6FFFFFFF].  A discontiguous space consists of (potentially)
> multiple regions, interleaved with other spaces.
>
> Arguably, the multiple 'create()' methods of VMRequest should have more
> descriptive names.
>
> hth,
> Robin
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>  


--
Regards,
Liangliang


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] How VMRequest.create() ask for memory resources?

by Robin Garner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Discontiguous spaces allow multiple VM spaces to occupy the same virtual
memory region.  Discontiguous spaces are allocated in 4MB 'chunks'
(Space.BYTES_IN_CHUNK) and all discontiguous spaces are allocated from
the same address range (as you have identified).

When a discontiguous space expands, it just grabs the next available
chunk of space within the discontiguous range.  In practice, the two
semi-spaces will both occupy a set of chunks within the discontiguous
range, interleaved.

So while conceptually we may draw the semispaces as

    |<--- 0 --->|<--- 1 --->|

in actual fact, they may be more like

    |00011000101001100111110|

all that matters is that
a) The spaces don't overlap, and
b) we can identify which space an object lives in, which is done in the
org.mmtk.utility.heap.Map class.


In fact, the semi-space collector allocates pages in a pattern somethink
like this (each character represents a chunk, and the heap size is 40MB,
so the heap is 10 chunks):

1. Allocate into S0
    |00000     |

2. Collect into S1
    |0000011   |

3. Release S0
    |     11   |

4. Allocate into S1
    |111  11   |

5. Collect into S0
    |11100110  |

6. Release S1
    |   00  0  |

and so on.

It's actually more complex than that, because the discontiguous region
is also shared with the large object space, the small and large code
spaces etc.

regards,
Robin

lltong wrote:

> Dear Robin,
>
> Thanks.
> I took a look at the "Space", seems that it will affect this code segment:
>
> if (vmRequest.type == VMRequest.REQUEST_DISCONTIGUOUS) {
>       this.contiguous = false;
>       this.descriptor = SpaceDescriptor.createDescriptor();
>       this.start = Address.zero();
>       this.extent = Extent.zero();
>       this.lastDiscontiguousRegion = Address.zero();
>       VM.memory.setHeapRange(index, HEAP_START, HEAP_END);
>       return;
>     }
>
> If VMRequest is used without parameters, its  type will be equal to  
> REQUEST_DISCONTIGUOUS, so that code segment is executed. But it seems to
> set the entire heap range for even one semi-space. Then where can
> another semi-space locate?
>
> Thanks in advance.
>
> Robin Garner wrote:
>> lltong wrote:
>>  
>>> Dear all,
>>>
>>> I am a little bit confused here, as described in the source:
>>>
>>> /  public static VMRequest create() {
>>>     return new VMRequest(REQUEST_DISCONTIGUOUS, Address.zero(),
>>> Extent.zero(), 0f, false);
>>>   }/
>>>
>>> It seems request nothing.
>>> By the way, can anyone tell me the difference between dis-contiguous and
>>> contiguous space?
>>> Thanks a lot.
>>>
>>>    
>> A VMRequest is a 'parameter object' - the only way a VMRequest is used
>> is to pass it to the constructor of a Space, in order to specify how the
>> Space should use virtual memory.  You should look in the code for Space
>> to see how this information is used.
>>
>> A contiguous space is a single uninterrupted region of virtual memory,
>> eg [60000000-6FFFFFFF].  A discontiguous space consists of (potentially)
>> multiple regions, interleaved with other spaces.
>>
>> Arguably, the multiple 'create()' methods of VMRequest should have more
>> descriptive names.
>>
>> hth,
>> Robin
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>> trial. Simplify your report design, integration and deployment - and focus on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> _______________________________________________
>> Jikesrvm-researchers mailing list
>> Jikesrvm-researchers@...
>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>  
>
>


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] How VMRequest.create() ask for memory resources?

by lltong :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear Robin,

I see, thanks so much.
So that means, the semispace will grow dynamically while the allocation
requests are satisfied, and if its limit(Heap-another
semispace-los-sanity-etc) is exceeded, a collection will be triggered.
Am I correct?
Also, does region mean a continuous memory space that has a specific
length? What is the typical length of this region?
Thanks.

Liangliang

Robin Garner wrote:

> Discontiguous spaces allow multiple VM spaces to occupy the same virtual
> memory region.  Discontiguous spaces are allocated in 4MB 'chunks'
> (Space.BYTES_IN_CHUNK) and all discontiguous spaces are allocated from
> the same address range (as you have identified).
>
> When a discontiguous space expands, it just grabs the next available
> chunk of space within the discontiguous range.  In practice, the two
> semi-spaces will both occupy a set of chunks within the discontiguous
> range, interleaved.
>
> So while conceptually we may draw the semispaces as
>
>     |<--- 0 --->|<--- 1 --->|
>
> in actual fact, they may be more like
>
>     |00011000101001100111110|
>
> all that matters is that
> a) The spaces don't overlap, and
> b) we can identify which space an object lives in, which is done in the
> org.mmtk.utility.heap.Map class.
>
>
> In fact, the semi-space collector allocates pages in a pattern somethink
> like this (each character represents a chunk, and the heap size is 40MB,
> so the heap is 10 chunks):
>
> 1. Allocate into S0
>     |00000     |
>
> 2. Collect into S1
>     |0000011   |
>
> 3. Release S0
>     |     11   |
>
> 4. Allocate into S1
>     |111  11   |
>
> 5. Collect into S0
>     |11100110  |
>
> 6. Release S1
>     |   00  0  |
>
> and so on.
>
> It's actually more complex than that, because the discontiguous region
> is also shared with the large object space, the small and large code
> spaces etc.
>
> regards,
> Robin
>
> lltong wrote:
>  
>> Dear Robin,
>>
>> Thanks.
>> I took a look at the "Space", seems that it will affect this code segment:
>>
>> if (vmRequest.type == VMRequest.REQUEST_DISCONTIGUOUS) {
>>       this.contiguous = false;
>>       this.descriptor = SpaceDescriptor.createDescriptor();
>>       this.start = Address.zero();
>>       this.extent = Extent.zero();
>>       this.lastDiscontiguousRegion = Address.zero();
>>       VM.memory.setHeapRange(index, HEAP_START, HEAP_END);
>>       return;
>>     }
>>
>> If VMRequest is used without parameters, its  type will be equal to  
>> REQUEST_DISCONTIGUOUS, so that code segment is executed. But it seems to
>> set the entire heap range for even one semi-space. Then where can
>> another semi-space locate?
>>
>> Thanks in advance.
>>
>> Robin Garner wrote:
>>    
>>> lltong wrote:
>>>  
>>>      
>>>> Dear all,
>>>>
>>>> I am a little bit confused here, as described in the source:
>>>>
>>>> /  public static VMRequest create() {
>>>>     return new VMRequest(REQUEST_DISCONTIGUOUS, Address.zero(),
>>>> Extent.zero(), 0f, false);
>>>>   }/
>>>>
>>>> It seems request nothing.
>>>> By the way, can anyone tell me the difference between dis-contiguous and
>>>> contiguous space?
>>>> Thanks a lot.
>>>>
>>>>    
>>>>        
>>> A VMRequest is a 'parameter object' - the only way a VMRequest is used
>>> is to pass it to the constructor of a Space, in order to specify how the
>>> Space should use virtual memory.  You should look in the code for Space
>>> to see how this information is used.
>>>
>>> A contiguous space is a single uninterrupted region of virtual memory,
>>> eg [60000000-6FFFFFFF].  A discontiguous space consists of (potentially)
>>> multiple regions, interleaved with other spaces.
>>>
>>> Arguably, the multiple 'create()' methods of VMRequest should have more
>>> descriptive names.
>>>
>>> hth,
>>> Robin
>>>
>>> ------------------------------------------------------------------------------
>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>>> trial. Simplify your report design, integration and deployment - and focus on
>>> what you do best, core application coding. Discover what's new with
>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>> _______________________________________________
>>> Jikesrvm-researchers mailing list
>>> Jikesrvm-researchers@...
>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>  
>>>      
>>    
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>  


--
Regards,
Liangliang


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] How VMRequest.create() ask for memory resources?

by Robin Garner :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

lltong wrote:
> Dear Robin,
>
> I see, thanks so much.
> So that means, the semispace will grow dynamically while the allocation
> requests are satisfied, and if its limit(Heap-another
> semispace-los-sanity-etc) is exceeded, a collection will be triggered.
> Am I correct?

Yes and no.

All Spaces in MMTk grow as required, consuming virtual address space as
defined in the VMRequest passed to their constructor.

Triggering collections is a function of a Plan, specifically the poll()
method of a plan.  There are several possible reasons that a collection
may be triggered.

> Also, does region mean a continuous memory space that has a specific
> length? What is the typical length of this region?

As I said below, discontiguous spaces grow their virtual memory
allocation in 4MB chunks.  contiguous spaces don't need to do that.  I
use the term 'region' loosely, with a context-specific meaning, as
opposed to 'space', 'chunk' or 'page', all of which have specific
meanings in MMTk.

cheers

> Thanks.
>
> Liangliang



>
> Robin Garner wrote:
>> Discontiguous spaces allow multiple VM spaces to occupy the same virtual
>> memory region.  Discontiguous spaces are allocated in 4MB 'chunks'
>> (Space.BYTES_IN_CHUNK) and all discontiguous spaces are allocated from
>> the same address range (as you have identified).
>>
>> When a discontiguous space expands, it just grabs the next available
>> chunk of space within the discontiguous range.  In practice, the two
>> semi-spaces will both occupy a set of chunks within the discontiguous
>> range, interleaved.
>>
>> So while conceptually we may draw the semispaces as
>>
>>     |<--- 0 --->|<--- 1 --->|
>>
>> in actual fact, they may be more like
>>
>>     |00011000101001100111110|
>>
>> all that matters is that
>> a) The spaces don't overlap, and
>> b) we can identify which space an object lives in, which is done in the
>> org.mmtk.utility.heap.Map class.
>>
>>
>> In fact, the semi-space collector allocates pages in a pattern somethink
>> like this (each character represents a chunk, and the heap size is 40MB,
>> so the heap is 10 chunks):
>>
>> 1. Allocate into S0
>>     |00000     |
>>
>> 2. Collect into S1
>>     |0000011   |
>>
>> 3. Release S0
>>     |     11   |
>>
>> 4. Allocate into S1
>>     |111  11   |
>>
>> 5. Collect into S0
>>     |11100110  |
>>
>> 6. Release S1
>>     |   00  0  |
>>
>> and so on.
>>
>> It's actually more complex than that, because the discontiguous region
>> is also shared with the large object space, the small and large code
>> spaces etc.
>>
>> regards,
>> Robin
>>
>> lltong wrote:
>>  
>>> Dear Robin,
>>>
>>> Thanks.
>>> I took a look at the "Space", seems that it will affect this code segment:
>>>
>>> if (vmRequest.type == VMRequest.REQUEST_DISCONTIGUOUS) {
>>>       this.contiguous = false;
>>>       this.descriptor = SpaceDescriptor.createDescriptor();
>>>       this.start = Address.zero();
>>>       this.extent = Extent.zero();
>>>       this.lastDiscontiguousRegion = Address.zero();
>>>       VM.memory.setHeapRange(index, HEAP_START, HEAP_END);
>>>       return;
>>>     }
>>>
>>> If VMRequest is used without parameters, its  type will be equal to  
>>> REQUEST_DISCONTIGUOUS, so that code segment is executed. But it seems to
>>> set the entire heap range for even one semi-space. Then where can
>>> another semi-space locate?
>>>
>>> Thanks in advance.
>>>
>>> Robin Garner wrote:
>>>    
>>>> lltong wrote:
>>>>  
>>>>      
>>>>> Dear all,
>>>>>
>>>>> I am a little bit confused here, as described in the source:
>>>>>
>>>>> /  public static VMRequest create() {
>>>>>     return new VMRequest(REQUEST_DISCONTIGUOUS, Address.zero(),
>>>>> Extent.zero(), 0f, false);
>>>>>   }/
>>>>>
>>>>> It seems request nothing.
>>>>> By the way, can anyone tell me the difference between dis-contiguous and
>>>>> contiguous space?
>>>>> Thanks a lot.
>>>>>
>>>>>    
>>>>>        
>>>> A VMRequest is a 'parameter object' - the only way a VMRequest is used
>>>> is to pass it to the constructor of a Space, in order to specify how the
>>>> Space should use virtual memory.  You should look in the code for Space
>>>> to see how this information is used.
>>>>
>>>> A contiguous space is a single uninterrupted region of virtual memory,
>>>> eg [60000000-6FFFFFFF].  A discontiguous space consists of (potentially)
>>>> multiple regions, interleaved with other spaces.
>>>>
>>>> Arguably, the multiple 'create()' methods of VMRequest should have more
>>>> descriptive names.
>>>>
>>>> hth,
>>>> Robin
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>>>> trial. Simplify your report design, integration and deployment - and focus on
>>>> what you do best, core application coding. Discover what's new with
>>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>>> _______________________________________________
>>>> Jikesrvm-researchers mailing list
>>>> Jikesrvm-researchers@...
>>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>>  
>>>>      
>>>    
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>> trial. Simplify your report design, integration and deployment - and focus on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> _______________________________________________
>> Jikesrvm-researchers mailing list
>> Jikesrvm-researchers@...
>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>  
>
>


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] How VMRequest.create() ask for memory resources?

by lltong :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear Robin,

Thanks so much for your detailed explains :)

Liangliang

Robin Garner wrote:

> lltong wrote:
>  
>> Dear Robin,
>>
>> I see, thanks so much.
>> So that means, the semispace will grow dynamically while the allocation
>> requests are satisfied, and if its limit(Heap-another
>> semispace-los-sanity-etc) is exceeded, a collection will be triggered.
>> Am I correct?
>>    
>
> Yes and no.
>
> All Spaces in MMTk grow as required, consuming virtual address space as
> defined in the VMRequest passed to their constructor.
>
> Triggering collections is a function of a Plan, specifically the poll()
> method of a plan.  There are several possible reasons that a collection
> may be triggered.
>
>  
>> Also, does region mean a continuous memory space that has a specific
>> length? What is the typical length of this region?
>>    
>
> As I said below, discontiguous spaces grow their virtual memory
> allocation in 4MB chunks.  contiguous spaces don't need to do that.  I
> use the term 'region' loosely, with a context-specific meaning, as
> opposed to 'space', 'chunk' or 'page', all of which have specific
> meanings in MMTk.
>
> cheers
>
>  
>> Thanks.
>>
>> Liangliang
>>    
>
>
>
>  
>> Robin Garner wrote:
>>    
>>> Discontiguous spaces allow multiple VM spaces to occupy the same virtual
>>> memory region.  Discontiguous spaces are allocated in 4MB 'chunks'
>>> (Space.BYTES_IN_CHUNK) and all discontiguous spaces are allocated from
>>> the same address range (as you have identified).
>>>
>>> When a discontiguous space expands, it just grabs the next available
>>> chunk of space within the discontiguous range.  In practice, the two
>>> semi-spaces will both occupy a set of chunks within the discontiguous
>>> range, interleaved.
>>>
>>> So while conceptually we may draw the semispaces as
>>>
>>>     |<--- 0 --->|<--- 1 --->|
>>>
>>> in actual fact, they may be more like
>>>
>>>     |00011000101001100111110|
>>>
>>> all that matters is that
>>> a) The spaces don't overlap, and
>>> b) we can identify which space an object lives in, which is done in the
>>> org.mmtk.utility.heap.Map class.
>>>
>>>
>>> In fact, the semi-space collector allocates pages in a pattern somethink
>>> like this (each character represents a chunk, and the heap size is 40MB,
>>> so the heap is 10 chunks):
>>>
>>> 1. Allocate into S0
>>>     |00000     |
>>>
>>> 2. Collect into S1
>>>     |0000011   |
>>>
>>> 3. Release S0
>>>     |     11   |
>>>
>>> 4. Allocate into S1
>>>     |111  11   |
>>>
>>> 5. Collect into S0
>>>     |11100110  |
>>>
>>> 6. Release S1
>>>     |   00  0  |
>>>
>>> and so on.
>>>
>>> It's actually more complex than that, because the discontiguous region
>>> is also shared with the large object space, the small and large code
>>> spaces etc.
>>>
>>> regards,
>>> Robin
>>>
>>> lltong wrote:
>>>  
>>>      
>>>> Dear Robin,
>>>>
>>>> Thanks.
>>>> I took a look at the "Space", seems that it will affect this code segment:
>>>>
>>>> if (vmRequest.type == VMRequest.REQUEST_DISCONTIGUOUS) {
>>>>       this.contiguous = false;
>>>>       this.descriptor = SpaceDescriptor.createDescriptor();
>>>>       this.start = Address.zero();
>>>>       this.extent = Extent.zero();
>>>>       this.lastDiscontiguousRegion = Address.zero();
>>>>       VM.memory.setHeapRange(index, HEAP_START, HEAP_END);
>>>>       return;
>>>>     }
>>>>
>>>> If VMRequest is used without parameters, its  type will be equal to  
>>>> REQUEST_DISCONTIGUOUS, so that code segment is executed. But it seems to
>>>> set the entire heap range for even one semi-space. Then where can
>>>> another semi-space locate?
>>>>
>>>> Thanks in advance.
>>>>
>>>> Robin Garner wrote:
>>>>    
>>>>        
>>>>> lltong wrote:
>>>>>  
>>>>>      
>>>>>          
>>>>>> Dear all,
>>>>>>
>>>>>> I am a little bit confused here, as described in the source:
>>>>>>
>>>>>> /  public static VMRequest create() {
>>>>>>     return new VMRequest(REQUEST_DISCONTIGUOUS, Address.zero(),
>>>>>> Extent.zero(), 0f, false);
>>>>>>   }/
>>>>>>
>>>>>> It seems request nothing.
>>>>>> By the way, can anyone tell me the difference between dis-contiguous and
>>>>>> contiguous space?
>>>>>> Thanks a lot.
>>>>>>
>>>>>>    
>>>>>>        
>>>>>>            
>>>>> A VMRequest is a 'parameter object' - the only way a VMRequest is used
>>>>> is to pass it to the constructor of a Space, in order to specify how the
>>>>> Space should use virtual memory.  You should look in the code for Space
>>>>> to see how this information is used.
>>>>>
>>>>> A contiguous space is a single uninterrupted region of virtual memory,
>>>>> eg [60000000-6FFFFFFF].  A discontiguous space consists of (potentially)
>>>>> multiple regions, interleaved with other spaces.
>>>>>
>>>>> Arguably, the multiple 'create()' methods of VMRequest should have more
>>>>> descriptive names.
>>>>>
>>>>> hth,
>>>>> Robin
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>>>>> trial. Simplify your report design, integration and deployment - and focus on
>>>>> what you do best, core application coding. Discover what's new with
>>>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>>>> _______________________________________________
>>>>> Jikesrvm-researchers mailing list
>>>>> Jikesrvm-researchers@...
>>>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>>>  
>>>>>      
>>>>>          
>>>>    
>>>>        
>>> ------------------------------------------------------------------------------
>>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>>> trial. Simplify your report design, integration and deployment - and focus on
>>> what you do best, core application coding. Discover what's new with
>>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>>> _______________________________________________
>>> Jikesrvm-researchers mailing list
>>> Jikesrvm-researchers@...
>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>  
>>>      
>>    
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>  


--
Regards,
Liangliang


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

[rvm-research] About the GCHeader

by lltong :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear all,

In the JavaHeader.java, it uses two words to store the object header. As
I can understand , whatever ADDRESS_BASED_HASHING is enabled, the lowest
two bits will be free and available for other usages.

In the fields of CopySpace, it sets the LOCAL_GC_BITS_REQUIRED to be 2
but GC_HEADER_WORDS_REQUIRED to be 0. Does it mean that the lowest two
bits in the JavaHeader.java are employed here to assist marking and
forwarding?

Thanks.

--
Regards,
Liangliang


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

[rvm-research] About the copyspace of nursury

by lltong :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear all,

I am wondering, why there is only one CopySpace for Gen.java, as it  
emploies a copying nursury, there should be two.
Thanks.

Regards,
Liangliang

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

Re: [rvm-research] About the copyspace of nursury

by Michael Bond :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Liangliang,

Every nursery collection copies the surviving nursery objects out of the
nursery and into the old space, so only one CopySpace is needed.  (You may
be thinking of HotSpot's collector, which I believe copies objects several
times in the nursery before promoting them to the old space.)

Cheers,
Mike

On Tue, 10 Nov 2009, lltong@... wrote:

> Dear all,
>
> I am wondering, why there is only one CopySpace for Gen.java, as it
> emploies a copying nursury, there should be two.
> Thanks.
>
> Regards,
> Liangliang
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Jikesrvm-researchers mailing list
> Jikesrvm-researchers@...
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jikesrvm-researchers mailing list
Jikesrvm-researchers@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
< Prev | 1 - 2 | Next >