--- Log opened Thu Jun 04 00:00:03 2009 09:57 -!- ahuillet [n=ahuillet@238.251.80-79.rev.gaoland.net] has quit [Read error: 60 (Operation timed out)] 11:19 -!- tgrabiec [n=tomekg@rev-189-107.ramtel.pl] has joined #jato 12:32 < tgrabiec> penberg: ping 12:33 <@penberg> tgrabiec: pong 12:38 < tgrabiec> penberg: well, your example exception throwing code has nothing to do with the patch 6/6 actually. jato will throw OutOfMemoryError too for the example you sent 12:40 <@penberg> tgrabiec: OK, then I don't understand your patch ;) 12:43 -!- tgrabiec [n=tomekg@rev-189-107.ramtel.pl] has quit [Read error: 60 (Operation timed out)] 12:45 -!- tgrabiec [n=tomekg@rev-189-107.ramtel.pl] has joined #jato 12:46 -!- tgrabiec [n=tomekg@rev-189-107.ramtel.pl] has quit [Client Quit] 12:46 -!- tgrabiec [n=tomekg@rev-189-107.ramtel.pl] has joined #jato 12:46 < tgrabiec> i'm havnig some network probelms here 12:47 < tgrabiec> penberg: did you write anything after "pong" ? 12:49 <@penberg> tgrabiec: no. 12:49 <@penberg> 13:40 <@penberg> tgrabiec: OK, then I don't understand your patch ;) 12:49 <@penberg> that's what I wrote. 12:49 <@penberg> so I gues the answer is yes ;) 12:57 < tgrabiec> penberg: so, about patch 6/6. function new_exception() is used only to create exceptions signalled by jatoVM. imagine a situation, when we want to throw NullPointerException from jatoVM. we call new_exception() and from that function we call the NullPointerException constructor. This can cause a compilation of the constructor, during which the same exception can be created and that will lead to dead lock 12:59 <@penberg> ok 12:59 <@penberg> but 12:59 <@penberg> hmm 13:00 <@penberg> tgrabiec: But I don't see how 6/6 helps things? 13:00 <@penberg> tgrabiec: or is it just a debugging thing? 13:00 < tgrabiec> penberg: it does not help things, it just tells us what happens when it happens 13:00 < tgrabiec> yes, just a debug 13:00 <@penberg> tgrabiec: why is in_new_exception not static? 13:01 < tgrabiec> oh, my bed, it should be 13:01 <@penberg> tgrabiec: ok, you might as well make it static then 13:01 <@penberg> tgrabiec: and move the declaration either _in_ new_exception() or really close to it. 13:01 <@penberg> tgrabiec: can you resend that and I'll appy it? 13:01 <@penberg> tgrabiec: what about 5/6? 13:02 < tgrabiec> penberg: 5/6, hmm, i still think that the idea is good - we have to be able to throw exceptions when compilation fails 13:02 < tgrabiec> penberg: but i was thinking of delaying the merge 13:03 < tgrabiec> because of the throwing mechanism that's probably about to change a bit 13:04 <@penberg> tgrabiec: ok, I'm going to just skip that for now 13:04 <@penberg> tgrabiec: I don't really have objections to it. 13:05 < tgrabiec> penberg: about the discussion we had yesterday, i think that the solution proposed by vegard - to replace the return address of jato functions - might be better than guard pages 13:06 < tgrabiec> but we can do this only from functions that are directly called from JIT code and not from athor jato functions. I'm currently working on it 13:06 -!- ahuillet_ [n=user@238.251.80-79.rev.gaoland.net] has joined #jato 13:07 < tgrabiec> penberg: do you see any problems with that ? 13:08 -!- ahuillet [n=ahuillet@238.251.80-79.rev.gaoland.net] has joined #jato 13:08 -!- mode/#jato [+o ahuillet] by ChanServ 13:09 -!- ahuillet [n=ahuillet@238.251.80-79.rev.gaoland.net] has quit [Client Quit] 13:12 < tgrabiec> i will probably have to do some "benchmark" comparing the two solutions 13:35 <@penberg> tgrabiec: hmm, might be doable, sure. 13:35 <@penberg> tgrabiec: wouldn't that mean even less overhead for the non exception case? 13:37 < tgrabiec> penberg: less overhead, probably, but to achieve this we need something faster than getExecEnv() 13:38 < tgrabiec> it will gratly reduce overhead when exception is thrown for sure 13:40 < tgrabiec> penberg: probably i will need some static per-thread stash for exceptions, because a call to getExecEnv() will surely take much longer than guard page test 14:10 < ahuillet_> ok, I lost a harddrive today 14:10 < ahuillet_> the one with my mailbox and such 14:41 <@penberg> ahuillet_: :( 15:06 < ahuillet_> poor ext2 system on it is completely dead 15:07 < ahuillet_> not sure about the actual harddrive but the FS is screwed up like I've never seen :) 15:14 -!- ahuillet_ [n=user@238.251.80-79.rev.gaoland.net] has quit [Read error: 54 (Connection reset by peer)] 15:15 -!- ahuillet_ [n=user@238.251.80-79.rev.gaoland.net] has joined #jato 15:19 -!- ahuillet_ [n=user@238.251.80-79.rev.gaoland.net] has quit [Read error: 60 (Operation timed out)] 15:23 -!- ahuillet_ [n=user@238.251.80-79.rev.gaoland.net] has joined #jato 15:24 -!- ahuillet_ [n=user@238.251.80-79.rev.gaoland.net] has quit [Remote closed the connection] 15:26 -!- ahuillet_ [n=user@238.251.80-79.rev.gaoland.net] has joined #jato 16:08 -!- ahuillet [n=ahuillet@238.251.80-79.rev.gaoland.net] has joined #jato 16:08 -!- mode/#jato [+o ahuillet] by ChanServ 16:14 -!- ahuillet [n=ahuillet@238.251.80-79.rev.gaoland.net] has quit ["ZNC by prozac - http://znc.sourceforge.net"] 16:17 -!- ahuillet [n=ahuillet@238.251.80-79.rev.gaoland.net] has joined #jato 16:17 -!- mode/#jato [+o ahuillet] by ChanServ 16:24 -!- ahuillet_ [n=user@238.251.80-79.rev.gaoland.net] has quit [Remote closed the connection] 18:37 < vegard> exam was bleh 20:36 < tgrabiec> penberg: i've implemented the return-address-override method, and did some benchmarks how it compares to current guard-page method 20:36 < tgrabiec> here are the results: http://pastebin.com/m30a35929 20:38 < tgrabiec> generally return-override is slightly worse when no exception occures, but it's 8x faster when exception occure 20:39 < tgrabiec> one might have expected that 20:48 < tgrabiec> the new method is slightly worse than guard page in that test, because it requires 3 instructions to check for exception occurance _and_ push/pop for 4 registers that are clobbered. When guard-page method is used, the check_cast() method is empty. 20:48 < tgrabiec> So i think that in real life, there will not be much difference in performance when no exception occure between those two methods. 20:49 < tgrabiec> now that i've done some work to implement return-address override, i think it's better and should replace the guard-page ;) --- Log closed Fri Jun 05 00:00:08 2009