sablevm-developer Mailing List for SableVM (Page 11)
Brought to you by:
egagnon
You can subscribe to this list here.
2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(27) |
Aug
(22) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(30) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(32) |
Oct
|
Nov
|
Dec
|
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(69) |
Sep
(10) |
Oct
(31) |
Nov
(15) |
Dec
(58) |
2003 |
Jan
(33) |
Feb
(81) |
Mar
(85) |
Apr
(24) |
May
(15) |
Jun
(14) |
Jul
(6) |
Aug
(9) |
Sep
(101) |
Oct
(59) |
Nov
(142) |
Dec
(34) |
2004 |
Jan
(107) |
Feb
(164) |
Mar
(181) |
Apr
(96) |
May
(81) |
Jun
(71) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Chris P. <chr...@ma...> - 2004-03-29 23:22:53
|
David Bélanger wrote: > Hi, > > I never got debugging info for SableVM in gdb when compiled with gcc 3.x, > though it is fine with gcc 2.95. By debugging info, I am talking about > corresponding source code. > > It seems that gdb will find only sablevm.c source file and will say it > cannot find the other source files. > > First I thought that could be compatibility problem with gcc and gdb and > maybe Debian gdb was not recent enough. But now, I'm on Gentoo and > everything should be recent :), but still the same problem... > > Any ideas? > > On Gentoo, I have: > gdb 6.0 > gcc 3.2.3 (On Debian, happens also with gcc 3.3) $ gdb --args sablevm Main (gdb) break JNI_CreateJavaVM (gdb) r (gdb) list works for me on the Sable systems with gdb 6.0 and gcc 3.3.2 (I had to install these). Maybe it's some kind of path problem. There is a big gdb 6.0 manual that might help. Cheers, Chris |
From: David <db...@cs...> - 2004-03-29 22:14:25
|
Hi, I never got debugging info for SableVM in gdb when compiled with gcc 3.x, though it is fine with gcc 2.95. By debugging info, I am talking about corresponding source code. It seems that gdb will find only sablevm.c source file and will say it cannot find the other source files. First I thought that could be compatibility problem with gcc and gdb and maybe Debian gdb was not recent enough. But now, I'm on Gentoo and everything should be recent :), but still the same problem... Any ideas? On Gentoo, I have: gdb 6.0 gcc 3.2.3 (On Debian, happens also with gcc 3.3) David --- David B=E9langer Graduate Student School of Computer Science McGill University Office: MC226 Web page: http://www.cs.mcgill.ca/~dbelan2/ Public key: http://www.cs.mcgill.ca/~dbelan2/public_key.txt |
From: <von...@ya...> - 2004-03-29 10:20:19
|
Sorry for this mail but in sourceforge i can't delete my subscrption to this mailing list. Somebody con do it or tell me how to do this.. Thank's a lot Andrea ______________________________________________________________________ Yahoo! Mail: 6MB di spazio gratuito, 30MB per i tuoi allegati, l'antivirus, il filtro Anti-spam http://it.yahoo.com/mail_it/foot/?http://it.mail.yahoo.com/ |
From: Etienne G. <gag...@uq...> - 2004-03-29 04:55:22
|
Hi Jeroen and SableVM folks, I have looked at your patch. At first sight, it seems good to me. I will let David and Greg actually test it. Etienne -------- Original Message -------- Subject: RE: Classpath build process and VM-specific issues Date: Sun, 28 Mar 2004 20:34:42 +0200 From: Jeroen Frijters <je...@su...> To: Etienne Gagnon <gag...@uq...>, Mark Wielaard <ma...@kl...> CC: GNU Classpath <cla...@gn...> Etienne Gagnon wrote: > Mark Wielaard wrote: > > I would like the vmdata field type then to be VMClass not Object. > > I disagree, as it imposes a restriction on what vmData actually is. > The most obvious implementation of vmData is to be a byte[] instance > holding the byte of a native pointer to an internal VM non-moveable > data structure. I'm glad to see we agree (although I don't think it's at all obvious that it should be a byte[], not all VMs use native code). I've attached my first shot at the structure. It's actually quite trivial. I've already implemented it in IKVM.NET and it works very well for me. Please let me know if this works for you too. Regards, Jeroen -- Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |
From: Etienne G. <gag...@uq...> - 2004-03-29 03:00:26
|
Grzegorz B. Prokopski wrote: > from ex. java.io.Serializable and apparently, when the code is compiled > with the latest jikes SableVM bombs out in initialization.c when finds > <clinit> method that contains initialization of this field. I think I found the motivation for this change... (unless somebody has a better explanation; maybe someone should ask on jikes ML): This field being a constant, any reference to its value would be hardcoded in compiled code (instead of using GETSTATIC) as mandated by the specification, yet most probably, if another class refers to this constant, it is because it wants to check the "current" value against some value encoded in a serialized file... > Q: Assuming for the moment that I don't care what is inside of <clinit> > what method should I call here, from within > svmf_special_initialization (_svmt_JNIEnv *env, _svmt_class_info > *class) to execute this method ? If you really didn't care, you would call the usual _svmf_initialization(). > Q: Do we have any flag that says that we're in bootstrap stage > (I haven't found any), or should I add one (in env, I guess)? Not sure about this way to go about it. We should discuss this in person (emails would be too long). > Q: Wouldn't prepare_code.c be good place to restrict what bytecodes > can be prepared for execution at bootstrap stage? Yes, it would. Etienne -- Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |
From: Etienne G. <gag...@uq...> - 2004-03-28 23:07:10
|
Or, even better... You could do as suggested in the FAQ, and run sablevm as follows: $ strace sablevm HelloWorld If you don't have strace already installed on your Debian machine, you can install it as follows: $ su $ apt-get install strace $ exit strace will give very long output, so you should probably write: $ strace sablevm HelloWorld 2> strace.out to send the error output into a file called "strace.out". You could then look at its content to try identifying the problem. You should look for error messages in "open()" calls, i.e. return value of -1 with an error code starting with an E, like in the following: open("/home/egagnon/work/share/sablevm/sablevm-classpath/java/lang/Object= =2Eclass", O_RDONLY) =3D -1 ENOENT (No such file or directory) If you are unable to decipher this, you can also send us a copy of the strace.out file *IF* it is not too big (e.g. < 40 Kb of data). Good luck! Etienne PS: My preferred debugger is ddd. You can install it as shown above, but with the command "apt-get install ddd". Chris Pickett wrote: > Hi, >=20 > You can probably help most by learning a little of gdb and stepping > through the execution. >=20 > e.g. > $ gdb sablevm TestProgram > (gdb) break main <-- set a breakpoint in the main method > (gdb) 'r' <-- for run > (gdb) list <-- to list source >=20 > and then use 's' (step) and 'n' (next) and 'break' to get to the proble= m. >=20 > Probably it is easier to run gdb through an interface like emacs (M-x > gdb) or ddd, because they update where you are in the source file as yo= u > issue commands. Personally I like emacs because it doesn't depend on X= > -- try splitting emacs vertically with 'C-x 3' and then running gdb in > one window / frame / whatever-they're-called -- I think the default > splits horizontally and you don't get to see so much source at once. >=20 > You're looking for a point where JNI_CreateJavaVM () returns JNI_ERR an= d > thus causes the "cannot create vm" message to be printed. >=20 > Cheers, > Chris >=20 > P.S. I can't add this to the wiki right now because I can't connect to= > www.sablevm.org ... >=20 > canning yuan wrote: >=20 >>Hi, I'm the teammate of QianLi. Our problem isn't still unsolved. >>We installed the sablevm as following: >>=20 >>su >>$ tar -xzvf sablevm-classpath-1.1.1.tar.gz >>$ cd sablevm-classpath-1.1.1 >>$ ./build_classpath --no-gtk /usr/local >>$ cd .. >>$ tar -xzvf sablevm-1.1.1.tar.gz >>$ cd sablevm-1.1.1 >>$ ./configure --enable-debugging-features --disable-no-reorder-blocks >> --prefix=3D/usr/local >>$ make >>$ make install=20 >>But we get "can't create vm" error, when we run test program. we have=20 >>read the information in FAQ. But it still can't work. >>Thanks in advance. >> = =20 >> >> = =20 >>canning >> >> >>-----------------------------------------------------------------------= - >>*Do You Yahoo!?* >>=CD=EA=C8=AB=C3=E2=B7=D1=B5=C4=D1=C5=BB=A2=B5=E7=D3=CA=A3=AC=C2=ED=C9=CF= =D7=A2=B2=E1=BB=F1=D4=F9=B6=EE=CD=E260=D5=D7=CD=F8=C2=E7=B4=E6=B4=A2=BF=D5= =BC=E4=20 >><http://cn.rd.yahoo.com/mail_cn/tag/?http://cn.mail.yahoo.com> >=20 >=20 >=20 >=20 > ------------------------------------------------------- > This SF.Net email is sponsored by: IBM Linux Tutorials > Free Linux tutorial presented by Daniel Robbins, President and CEO of > GenToo technologies. Learn everything from fundamentals to system > administration.http://ads.osdn.com/?ad_id=3D1470&alloc_id=3D3638&op=3Dc= lick > _______________________________________________ > Sablevm-developer mailing list > Sab...@li... > https://lists.sourceforge.net/lists/listinfo/sablevm-developer >=20 >=20 --=20 Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |
From: Grzegorz B. P. <ga...@de...> - 2004-03-28 20:37:42
|
W li=B6cie z nie, 28-03-2004, godz. 12:21, Etienne Gagnon pisze:=20 > Hi David, >=20 > David B=E9langer wrote: > > One of the bug reports concern the type _svmt_interned_string_struct > > that is unused. The String.intern() is implemented in Java. > >=20 > > Is there any future or unimplemented use for > > _svmt_interned_string_struct: >=20 > Not that I know of. Early versions of SableVM needed it, until I simpl= ified > the bootstrap process (thus the static initialization restrictions). ...speaking of which: I tried to remove comments for things like: //private static final long serialVersionUID =3D 3206093459760846163L; from ex. java.io.Serializable and apparently, when the code is compiled with the latest jikes SableVM bombs out in initialization.c when finds <clinit> method that contains initialization of this field. Q: Assuming for the moment that I don't care what is inside of <clinit> what method should I call here, from within svmf_special_initialization (_svmt_JNIEnv *env, _svmt_class_info *class) to execute this method ? Q: Do we have any flag that says that we're in bootstrap stage (I haven't found any), or should I add one (in env, I guess)? Q: Wouldn't prepare_code.c be good place to restrict what bytecodes can be prepared for execution at bootstrap stage? GBP --=20 Grzegorz B. Prokopski <ga...@de...> Debian GNU/Linux http://www.debian.org SableVM - LGPLed JVM http://www.sablevm.org Why SableVM ?!? http://devel.sablevm.org/wiki/WhySableVM |
From: Etienne G. <gag...@uq...> - 2004-03-28 19:18:50
|
Julio M. Merino Vidal wrote: > Let's see if it's better now. Cheers. Hi Julio, I've made some modifications to the configuration code, and the code is now in staging. Thanks a lot! Etienne -- Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |
From: Etienne G. <gag...@uq...> - 2004-03-28 18:12:14
|
Hi David, David B=E9langer wrote: > One of the bug reports concern the type _svmt_interned_string_struct > that is unused. The String.intern() is implemented in Java. >=20 > Is there any future or unimplemented use for > _svmt_interned_string_struct: Not that I know of. Early versions of SableVM needed it, until I simplif= ied the bootstrap process (thus the static initialization restrictions). You can safely remove this code. Etienne --=20 Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |
From: Chris P. <chr...@ma...> - 2004-03-28 17:41:18
|
Hi, You can probably help most by learning a little of gdb and stepping through the execution. e.g. $ gdb sablevm TestProgram (gdb) break main <-- set a breakpoint in the main method (gdb) 'r' <-- for run (gdb) list <-- to list source and then use 's' (step) and 'n' (next) and 'break' to get to the problem. Probably it is easier to run gdb through an interface like emacs (M-x gdb) or ddd, because they update where you are in the source file as you issue commands. Personally I like emacs because it doesn't depend on X -- try splitting emacs vertically with 'C-x 3' and then running gdb in one window / frame / whatever-they're-called -- I think the default splits horizontally and you don't get to see so much source at once. You're looking for a point where JNI_CreateJavaVM () returns JNI_ERR and thus causes the "cannot create vm" message to be printed. Cheers, Chris P.S. I can't add this to the wiki right now because I can't connect to www.sablevm.org ... canning yuan wrote: > Hi, I'm the teammate of QianLi. Our problem isn't still unsolved. > We installed the sablevm as following: > > su > $ tar -xzvf sablevm-classpath-1.1.1.tar.gz > $ cd sablevm-classpath-1.1.1 > $ ./build_classpath --no-gtk /usr/local > $ cd .. > $ tar -xzvf sablevm-1.1.1.tar.gz > $ cd sablevm-1.1.1 > $ ./configure --enable-debugging-features --disable-no-reorder-blocks > --prefix=/usr/local > $ make > $ make install > But we get "can't create vm" error, when we run test program. we have > read the information in FAQ. But it still can't work. > Thanks in advance. > > > > canning > > > ------------------------------------------------------------------------ > *Do You Yahoo!?* > 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 > <http://cn.rd.yahoo.com/mail_cn/tag/?http://cn.mail.yahoo.com> |
From: David <db...@cs...> - 2004-03-28 01:01:08
|
Etienne, One of the bug reports concern the type _svmt_interned_string_struct that is unused. The String.intern() is implemented in Java. Is there any future or unimplemented use for _svmt_interned_string_struct: ------- struct _svmt_interned_string_struct { _svmt_interned_string *next; const char *value; /* this string will not be automatically feed and m= ust remain unchanged throughout the bootstrapping process. */ jstring string; /* reference to interned string */ }; --------- David --- David B=E9langer Graduate Student School of Computer Science McGill University Office: MC226 Web page: http://www.cs.mcgill.ca/~dbelan2/ Public key: http://www.cs.mcgill.ca/~dbelan2/public_key.txt |
From: Julio M. M. V. <jm...@me...> - 2004-03-27 22:37:01
|
On Sat, 27 Mar 2004 12:16:24 -0500 "Grzegorz B. Prokopski" <ga...@de...> wrote: > W li=B6cie z pi=B1, 26-03-2004, godz. 18:18, Julio M. Merino Vidal pisze:= =20 > > - Move some #ifdef's around in error.c, to protect more code that uses = siginfo > > stuff. >=20 > The only problem is, that sometimes you want to disable signals for > performance resons and still be able to send SIGQUIT to get stack dump. > The --disable-signals-for-exceptions has it in its name. It is not > a general switch that enables/disables signals. >=20 > I think that based on the autodetection you wrote you could define > a symbol in configure, then use it to either disable SIGQUIT handling > completly, or to enable some special version of this handler. That's indeed better. The attached patch should do it: it checks for sigin= fo and, if it's not available, it disables all signals; but if it is, "signals for exceptions" behavior is preserved. Also avoids the ugly "#define sigin= fo_t void" hack of the previous patch. This should help Cygwin too, as I read in another post ;) Let's see if it's better now. Cheers. --=20 Julio M. Merino Vidal <jm...@me...> The NetBSD Project - http://www.NetBSD.org/ |
From: Grzegorz B. P. <ga...@de...> - 2004-03-27 18:00:44
|
W li=B6cie z sob, 27-03-2004, godz. 11:23, Etienne Gagnon pisze:=20 > Based on what I saw at your website, I would like to begin with > helping in porting the existing source code to cygwin. In this > context, I would like to know who the contact point is, and > what the current status is. Hello Kamesh, I am very happy to answer to your email. Cc:ing sablevm-developer mailing list, as this is probably the best place to discuss SableVM development-related topics. Status of cygwin port: * We have some code that once worked [1], and the changes in SableVM sources were minimal * We completly disabled signals usage in SableVM. As far as I know Cygwin has some minimal support for signals, not sure how good, so maybe we should just auto-disable signals when cygwin is detected? * We had to compile shared library of libffi by hand as cygwin gcc provided only static library, and, I think, we also had to copy the headers, because they were not available from cygwin. Fixing this problem and forwarding patches upstream (to Cygwin) would be important part of the port because that would later allow other people to "just compile" SableVM on cygwin, which is not possible now. * We disabled GTK+/AWT in sablevm-classpath, because we did not have recent-enough GTK+. It could have changed sice then. You need at least 2.2.x version, and it has to be shared library too. * Under Cygwin a shared library can not open itself. libsablevm.so does this, so we had to code a workaround. We store addresses of funtions inside libsablevm.so and then we search them instead of asking libtool to do this work for us. This code is already written, is working and all it needs is merge with our development version called "staging". On the "tools that you use". You need Subversion to access our code repository (though You can also use last daily snapshot tar archive as your starting point, see http://devel.sablevm.org/shot ). Subersion nicely compiles under cygwin, but maybe you'd be able to find binary packages (I was not, a few months ago). They would need to be quite recent though. Windows version will not be good, because it'd use dos-style CR/LF as line ends so most probably you would not even be able to compile such a file under cygwin. [1] The URL to the repository with cygwin port is this: svn://svn.sablevm.org/developers/mlord/sandbox/sablevm-staging You can use this command to see the changes from the original sablevm: svn diff -r 1204:1272 svn://svn.sablevm.org/developers/mlord/sandbox/sablevm-staging |less > Please let me know if there are any other tasks that I can > lend a hand with. We are surely interested in Cygwin port. Other that this - we are also looking for somebody willing to prepare .rpm (or even lsb-rpm) packages of SableVM (and then doing binary releases if possible)... I guess you might have seen this page already: http://devel.sablevm.org/wiki/TODO It contains a few suggested topics. It's all up to you :-) Hope this helps, Grzegorz B. Prokopski --=20 Grzegorz B. Prokopski <ga...@de...> Debian GNU/Linux http://www.debian.org SableVM - LGPLed JVM http://www.sablevm.org Why SableVM ?!? http://devel.sablevm.org/wiki/WhySableVM |
From: Grzegorz B. P. <ga...@de...> - 2004-03-27 17:47:57
|
W li=B6cie z pi=B1, 26-03-2004, godz. 18:18, Julio M. Merino Vidal pisze:= =20 > - Move some #ifdef's around in error.c, to protect more code that uses = siginfo > stuff. The only problem is, that sometimes you want to disable signals for performance resons and still be able to send SIGQUIT to get stack dump. The --disable-signals-for-exceptions has it in its name. It is not a general switch that enables/disables signals. I think that based on the autodetection you wrote you could define a symbol in configure, then use it to either disable SIGQUIT handling completly, or to enable some special version of this handler. Cheers, Grzegorz B. Prokopski --=20 Grzegorz B. Prokopski <ga...@de...> Debian GNU/Linux http://www.debian.org SableVM - LGPLed JVM http://www.sablevm.org Why SableVM ?!? http://devel.sablevm.org/wiki/WhySableVM |
From: Etienne G. <gag...@uq...> - 2004-03-27 03:07:44
|
David B=E9langer wrote: > However, I do not seem to be able to assign them to me. I made you a Bug Tracker admin. Please close bugs when they enter "staging". Ideally, some test case should be added in sablevm-test-suite for each closed bug. Etienne --=20 Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |
From: Archie C. <ar...@de...> - 2004-03-27 00:17:46
|
David B=E9langer wrote: > There are still several bugs on the sourceforge bug tracker, some > quite old. >=20 > It might be a good idea to close them if they have been fixed or to fix= > them. Most bugs or things have been assigned to Etienne, Archie or Chr= is. > But if other SableVM developers feel left out and want to participate > they are welcome. :) Unfortunately I have to face reality and admit that I no longer have much time to work on SableVM (hardly have time to work on JC!). So please feel free to reassign any bugs assigned to me if you're feeling impatient. Thanks, -Archie _________________________________________________________________________= _ Archie Cobbs * CTO, Awarix * http://www.awarix.co= m |
From: Julio M. M. V. <jm...@me...> - 2004-03-26 23:18:53
|
On Thu, 25 Mar 2004 23:45:58 -0500 Etienne Gagnon <gag...@uq...> wrote: > Hi Julio, > > You've made the Hall of Fame. Your name is in SableVM's AUTHORS file > (staging branch), along with your 3 patches applied. > > Thanks a lot! Wow :-) You're welcome. But now, back again to the SA_SIGINFO stuff. The patch I sent yesterday really fixed sablevm, but only for NetBSD-current. Today I gave a try under NetBSD 1.6.2 (the stable branch, which frankly is getting out of date and misses stuff like siginfo)... you guessed right, the build failed. I've got a patch that fixes it, though I'm not sure it's 100% right (because some signal handling is left out). Here is what I did: - Check for the presence of siginfo_t from configure. If it's not present, completely disable "signals for exceptions" unconditionally (with the appropiate warning to let the user know what's going on). I assume that if siginfo_t is not present, SA_SIGINFO is not either (and viceversa). - If siginfo is not present, define siginfo_t to void. This is used just once in a function prototype, and the siginfo_t parameter is never used when "signals for exceptions" are disabled. Therefore, setting it to a void pointer lets it work (because the parameter is not used), and the workaround is completely transparent to the code. - Move some #ifdef's around in error.c, to protect more code that uses siginfo stuff. So, if this rationale is ok, the attached patch should do it correctly ;-) Cheers -- Julio M. Merino Vidal <jm...@me...> The NetBSD Project - http://www.NetBSD.org/ |
From: David <db...@cs...> - 2004-03-26 22:59:03
|
Hi, As you noticed, I closed several bugs that have already been fixed. There are still several bugs on the sourceforge bug tracker, some quite old. It might be a good idea to close them if they have been fixed or to fix them. Most bugs or things have been assigned to Etienne, Archie or Chris= . But if other SableVM developers feel left out and want to participate they are welcome. :) I will take care of: 923922 Runtime.addShutdownHook: NullPointerException 723743 loadClass fails on custom class loader and eventually (low priority): 692638 bug jni getFieldID and others However, I do not seem to be able to assign them to me. David --- David B=E9langer Graduate Student School of Computer Science McGill University Office: MC226 Web page: http://www.cs.mcgill.ca/~dbelan2/ Public key: http://www.cs.mcgill.ca/~dbelan2/public_key.txt |
From: Etienne G. <gag...@uq...> - 2004-03-26 16:15:51
|
Stephen Crawley wrote: > Sounds like Kissme, though in the Kissme case I call those classes > kissme specific. A very minor difference is still a difference. I know, this is why I see the importance of the --with-vm=xxx option and m4 system so that: 1- VMs like SableVM & Kissme can share 99% of the code of VM*.java classes. 2- The appropriate 1% gets compiled, depending on which VM is going to use the compiled code. > Kissme currently has a couple of Java classes that implement the system > class loader. To be fair, SableVM adds a VirtualMachine.java class as a startup point, but that class could easily be used by other VMs. It modifies the provided gnu.xxx system class loader a little. [this is the kind of code fixes that could be shared; the code has nothing "sablevm-specific" to it]. > Skimming through the JVM spec, I haven't found where it states that all > package-private classes in a package must live in the same ZIP file. Hmmm... JVMS 5.3 says defining CL + package name + class name uniquely identify a class; I guess you're right... There's no such obligation. My error. (SableVM implements 5.3). -- Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |
From: Steven A. <au...@wa...> - 2004-03-26 14:33:18
|
Stephen Crawley wrote: > Skimming through the JVM spec, I haven't found where it states that all > package-private classes in a package must live in the same ZIP file. > > Could you point out for me where it says this? I am curious about this too, Etienne. Also, quoting from your original letter: Etienne> a Etienne> class outside glibj.zip (which, by the way, should be called libclasspath.jar) Etienne> is in a *different* runtime package than any class withing this file, Etienne> if one is to follow closely the JVM spec, Did you mean to imply that public classes in the same package must come from the same .jar file? I want to know about this possible requirement since, if it is a requirement, someone will need to bring Jikes RVM into conformance. I just did some browsing through the Sun 1.4.2 API docs and the closest thing I could find was the notion of sealing a package so that classes in it may be loaded only from a particular URL. [...] Etienne>I really do not see various VMs sharing the same Classpath installation; Etienne>ther would be just too much possible problems. > > I don't see these problems. In fact, from what I've heard from others, > I'm pretty sure that Jikes RVM, JC and Kissme could happily coexist with > a single Classpath development sandbox and a single install directory > containing one copy of glibj.jar and the Classpath native libraries. That is my understanding as well. It would just be a matter of telling the VM to load classes out of the shared Classpath install directory. (Of course, the VM-specific classes, including the whole com.ibm.JikesRVM.* tree, would still be first in that search path.) -- Steven Augart Jikes RVM, open source Research Virtual Machine: http://oss.software.ibm.com/jikesrvm Office: +1 914/784-6743 T.J. Watson Research Center, IBM |
From: Etienne G. <gag...@UQ...> - 2004-03-26 14:33:04
|
canning yuan wrote: > if we allocate loal heap for each thread for reducing synchronization. > why we can't do gc for each thread instead of stoping the world? Because the references to objects are propagated to other threads in Java programs, so it would be unsafe to move objects while other threads are possibly modifying these same objects at their "old" location. Do not forget that SableVM's garbage collector moves objects around; this must be done in a "stop-the-world" state (unless one implements some more complex protocol using what is called "read and write barriers"). Etienne -- Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |
From: <can...@ya...> - 2004-03-26 08:07:36
|
Hi everyone, if we allocate loal heap for each thread for reducing synchronization. why we can't do gc for each thread instead of stoping the world? canning --------------------------------- Do You Yahoo!? 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 |
From: <can...@ya...> - 2004-03-26 07:59:15
|
Hi everyone, if we can build local heap for each thread for reducing synchronization. why we can't do garbage collection for each thread instead of stopping the world. canning --------------------------------- Do You Yahoo!? 完全免费的雅虎电邮,马上注册获赠额外60兆网络存储空间 |
From: Stephen C. <cr...@ds...> - 2004-03-26 07:01:37
|
Hi Etienne, > SableVM does not have *any* sablevm-specific class. It simply uses > the /vm/reference classes with very *minor* modifications (currently > some changes are more than minor simply because it has not yet been > put into upstream classpath; e.g. fills in reflection classes, etc.). Sounds like Kissme, though in the Kissme case I call those classes kissme specific. A very minor difference is still a difference. > SableVM needs no Java classes of its own. Kissme currently has a couple of Java classes that implement the system class loader. > Also, strictly speaking, a > class outside glibj.zip (which, by the way, should be called libclasspath.jar) > is in a *different* runtime package than any class withing this file, > if one is to follow closely the JVM spec, so the package-private classes > have to live in libclasspath.jar. Interesting ... Skimming through the JVM spec, I haven't found where it states that all package-private classes in a package must live in the same ZIP file. Could you point out for me where it says this? > Also, I see no reason for SableVM to need to build classpath twice: > - once to build classpath itself, and > - once to re-build the VM*.java classes just for sablevm to be able > to put those classes in an awkward place on the system... This is only necessary if you insist in putting all system classes into the same ZIP file. > I really do not see various VMs sharing the same Classpath installation; > ther would be just too much possible problems. I don't see these problems. In fact, from what I've heard from others, I'm pretty sure that Jikes RVM, JC and Kissme could happily coexist with a single Classpath development sandbox and a single install directory containing one copy of glibj.jar and the Classpath native libraries. > So, to answer your question: out-of-the-box means: > 1- A user downloads SableCC (written in C) and compiles it (needs gcc). > 2- Same user downloads Classpath (written in C and Java), and compiles it > (needs gcc and jikes). > 3- User runs Java software. :-) With Kissme, you do step 2 before step 1. And you need to run the "./configure" scripts in both Classpath and Kissme. But I think that Kissme still qualifies as "out-of-the-box" by your criteria. -- Steve |
From: Etienne G. <gag...@uq...> - 2004-03-26 06:12:24
|
SableVM does not have *any* sablevm-specific class. It simply uses the /vm/reference classes with very *minor* modifications (currently some changes are more than minor simply because it has not yet been put into upstream classpath; e.g. fills in reflection classes, etc.). SableVM needs no Java classes of its own. Also, strictly speaking, a class outside glibj.zip (which, by the way, should be called libclasspath.jar) is in a *different* runtime package than any class withing this file, if one is to follow closely the JVM spec, so the package-private classes have to live in libclasspath.jar. Also, I see no reason for SableVM to need to build classpath twice: - once to build classpath itself, and - once to re-build the VM*.java classes just for sablevm to be able to put those classes in an awkward place on the system... I really do not see various VMs sharing the same Classpath installation; ther would be just too much possible problems. So, to answer your question: out-of-the-box means: 1- A user downloads SableCC (written in C) and compiles it (needs gcc). 2- Same user downloads Classpath (written in C and Java), and compiles it (needs gcc and jikes). 3- User runs Java software. :-) No hacks, no special classes in special directories, no ugly things. It just plainly works with (eventually) a single .jar file (+ .so files). [Currently needs classes in directory tree. Zlib patch pending commit in SableVM tree...] Etienne Steven Augart wrote: > Etienne: Jikes RVM uses a stock classpath build. All it does is copy > Classpath's glibj.zip and the .so files over to its own local storage > place. > > We get away with this because we put our own classes earlier in the path > than Classpath's. So we always get our own implementation of VMRuntime, > for instance, and never see Classpath's. Ditto for all of the other VM* > classes, I believe. > > I'm not sure what improved level of working out-of-the-box you would > want beyond that. Perhaps I have misunderstood what you're suggesting? > > --Steve Augart -- Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |