tag:blogger.com,1999:blog-3971202189709462152.post3519327524638923621..comments2024-03-11T12:50:02.036+01:00Comments on PyPy Status Blog: Porting the JIT to CLI (part 3)Carl Friedrich Bolz-Tereickhttp://www.blogger.com/profile/00518922641059511014noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-3971202189709462152.post-33467275348811528252009-04-11T05:00:00.000+02:002009-04-11T05:00:00.000+02:00My friends and I like to buy Anarchy credits, beca...My friends and I like to buy <A HREF="http://www.gamekoo.com/product/Anarchy_Online_credits.html" REL="nofollow">Anarchy credits</A>, because the <A HREF="http://www.gamekoo.com/product/Anarchy_Online_credits.html" REL="nofollow">Anarchy Online credits</A> is very useful to upgrade equipment. Only your equipment becomes better, then you can win this game. In <A HREF="http://www.gamekoo.com/product/Anarchy_Online_credits.html" REL="nofollow">Anarchy gold</A>, you can buy everything you want in this game. Tomorrow will be my birthday, so my friends promise to <A HREF="http://www.gamekoo.com/product/Anarchy_Online_credits.html" REL="nofollow">buy AO credits</A> as gifts. I am so happy. They understand me so well, <A HREF="http://www.gamekoo.com/product/Anarchy_Online_credits.html" REL="nofollow">Anarchy online gold</A> is my favorite. <BR/>I like <A HREF="http://www.gamekoo.com/product/Angels_Online_Gold.html" REL="nofollow">angels gold</A> very much because it is very useful. In fact at first sight I have fallen in love with <A HREF="http://www.gamekoo.com/product/Angels_Online_Gold.html" REL="nofollow">angels online gold</A>. So no matter how much I have spent to <A HREF="http://www.gamekoo.com/product/Angels_Online_Gold.html" REL="nofollow">buy angels gold</A>, I never regret. Because of <A HREF="http://www.gamekoo.com/product/Angels_Online_Gold.html" REL="nofollow">cheap angels online gold</A>, I meet a lot of friends.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-6527974544431160392008-12-20T15:38:00.000+01:002008-12-20T15:38:00.000+01:00@SinYou don't need to know any c or c++ to use psy...@Sin<BR/><BR/>You don't need to know any c or c++ to use psyco or shedskin. Only python.Luishttps://www.blogger.com/profile/01147433030878927988noreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-23833256925284459942008-12-20T13:56:00.000+01:002008-12-20T13:56:00.000+01:00@AnonymousProbably. People have great hopes for Py...@Anonymous<BR/><BR/>Probably. People have great hopes for PyPy, but you can never know how it will turn out, if at all.<BR/><BR/>Right now, you can use things like numpy, psycho, shedskin, cython/pyrex and a few others to speed up you code, only needing to know a few things about C or C++. Google them.Lucianhttps://www.blogger.com/profile/07775013906985712587noreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-89584112985293619112008-12-18T09:32:00.000+01:002008-12-18T09:32:00.000+01:00I'm a beginner programmer, so please excuse my beg...I'm a beginner programmer, so please excuse my beginner questions :-)<BR/><BR/>I just started learning Python as my first programming language. Several of my programmer friends have said I should learn Java instead, one reason being the difference in performance - specifically for doing natural language processing / AI stuff which is the area I am interested in.<BR/><BR/>With PyPy, do you think it is likely that in the near future, Python's performance may be close to that of Java? I do plan on learning multiple languages, but it would be nice if I could stick with Python for as long as possible :-)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-18448791827521005222008-12-12T17:26:00.000+01:002008-12-12T17:26:00.000+01:00Hi AntonioIronPython can create a method that look...Hi Antonio<BR/><BR/>IronPython can create a method that looks like this<BR/><BR/>void object add(object a, object b)<BR/>{<BR/> throw new Exception("I don't know how to add")<BR/>}<BR/><BR/>into <BR/><BR/>void object add(object a, object b)<BR/>{<BR/> if(a is int && b is int)<BR/> return (int)a + (int)b<BR/><BR/> throw new Exception("I don't know how to add")<BR/>}<BR/><BR/>and can further add new tests at runtime. The code do do the adding is written directly into the method body and there's no futher call needed. This is runtime code generation, not just caching<BR/><BR/>In your case, instead of having multiple methods implementing different blocks you could just rewrite the whole "master" method every time the flexswitch changes. That way there's no call overhead at all. That's what the DLR does. I think the main thing it's missing is promotion, so shared tests can't be moved up a level, and it doesn't do inlining.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-88208778576788468272008-12-12T10:02:00.000+01:002008-12-12T10:02:00.000+01:00@Ben Youngdo you have a link that explains in more...@Ben Young<BR/>do you have a link that explains in more detail what you mean?<BR/>As far as I know, DLR's callsites are just a way to do polymorphic inline caches, but nothing more. In particular, they don't do any specialization of the called code.<BR/><BR/>You are right that we could do the same to implement flexswitches, though I think this is a minor optimization, as right now the real performance problem is how to pass arguments across non-local links.Antonio Cunihttps://www.blogger.com/profile/17017456817083804792noreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-81905010078318246912008-12-11T09:22:00.000+01:002008-12-11T09:22:00.000+01:00It's wrong to say IronPython only does static tran...It's wrong to say IronPython only does static translation. The Call Site stuff happens and generates IL at run time, and generates different code depending on the types. In fact you may want to look at how they do it, becuase they regenerate the IL for a method multiple times, which may be another way of implementing Flex switchesAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-72462419167062512112008-12-08T20:11:00.000+01:002008-12-08T20:11:00.000+01:00@Yosefabout patching generated code, see fijal's c...@Yosef<BR/>about patching generated code, see fijal's comment. Btw, this is exactly the same approach used by psycoAntonio Cunihttps://www.blogger.com/profile/17017456817083804792noreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-65760384234720355202008-12-08T10:29:00.000+01:002008-12-08T10:29:00.000+01:00Most executable pages are read only, but there is ...Most executable pages are read only, but there is nothing that stops you from creating ones that are rw. You just pass different flags to mmap.<BR/><BR/>Cheers,<BR/>fijalMaciej Fijalkowskihttps://www.blogger.com/profile/11410841070239382771noreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-7483773854033083922008-12-08T09:15:00.000+01:002008-12-08T09:15:00.000+01:00The comment about assembly-code patching is intere...The comment about assembly-code patching is interesting. Do you mean assembly code backends can do runtime patching of previously generated code? I thought this is impossible, because operating systems mark executable pages as read-only. How is that dealt with?Yosefhttps://www.blogger.com/profile/18117739415274006306noreply@blogger.comtag:blogger.com,1999:blog-3971202189709462152.post-21940333146877503552008-12-07T23:33:00.000+01:002008-12-07T23:33:00.000+01:00JikesRVM + LLVMhttp://osdir.com/ml/java.jikes.rvm....JikesRVM + LLVM<BR/><BR/>http://osdir.com/ml/java.jikes.rvm.devel/2003-09/msg00059.html<BR/><BR/>Don't know if it succeeded.Anonymoushttps://www.blogger.com/profile/00807216800351567752noreply@blogger.com